[R-es] duda reemplazar valores en data frame según condición

Marcuzzi, Javier Rubén javier.ruben.marcuzzi en gmail.com
Lun Jul 29 21:09:49 CEST 2013


Estimado Rodrigo

Yo la plantearía de otra forma, por ejemplo

negativos <-MisDatos[MisDatos$Cosa<0,]
negativos

Es decir, obtener como negativos los valores que en MisDatos tienen Cosa 
menor a 0.

Este tipo de escritura puede tener más de una condición, que creo en en su 
caso es necesario para buscar valores entre.

A mi me resulta más entendible que usar for, if, etc. Aunque en otro 
ambiente uso esas partes del lenguaje, para lo que usted desea yo prefiero 
la primera.

Luego puede hacer un cbind al data.frame y agregar la columna "negativos".

Si lo exprese de una forma complicada, puede enviar sus datos (código en R) 
y sobre este le escribo algo.

Javier Marcuzzi

-----Original Message----- 
From: Rodrigo López Correa
Sent: Monday, July 29, 2013 3:52 PM
To: R-help-es
Subject: [R-es] duda reemplazar valores en data frame según condición

Estimados quería realizarles una consulta:


Trabajo con una tabla con 23 registros, la cual tiene en la columna "*ar4*"
valores de una variable llamada ranking para cada registro, y una columna
"percentil" donde le voy a colocar el nivel de percentil en el que se
encuentra ese valor (ar4) de cada uno de esos 23 registros.

La tabla es la siguiente::

código padre n ar4        percentil
1 27 -0,36  2 18 -0,17  3 17 -0,48  4 16 0,15  5 15 -0,03  6 13 -0,26  7 13
0,78  8 13 -0,07  9 12 -0,08  10 12 -0,09  11 11 *-0,54*  12 11 -0,13  13 10
0,04  14 10 -0,30  15 10 0,18  16 10 -0,53  17 9 0,05  18 9 -0,68  19 9 -*
0,55*  20 9 -0,48  21 9 0,28  22 9 -0,21  23 9 -0,19


Para completar la columna percentil, calculé de acuerdo a los valores de
"ar4", los percentiles 1%, 5%, 10%, 25%, 50%, 75%, 90%, 95% y 99%

percent<-quantile(tabla$ar4,
c(0.01,0.05,0.10,seq(0.25,0.75,0.25),0.90,0.95,0.99))

El resultado contenido en el vector percent fue:

1%                    5%           10%              25%         50%
          75%
-0.65             -0.55           -0.54            -0.42
-0.16            0.003

    90%                   95%                       99%
0.17                     0.27                        0.67


En este caso si el valor es menor o igual al valor contenido con el nombre
"10%" ( o sea  -0.54) pero mayor al valor contenido en "5%" del vector
percent, le adjudique el character "10%" en la columna percentil de la
tabla.

for (i in tabla$ar4){
  for(i in tabla$percentil){
    ifelse(tabla[i,"ar4"]<=percent["10%"] & tabla[i,"ar4"]>percent["5%"]),
tabla[i,"percentil"]<-"10%", tabla[i,"percentil"]<-"NA")


  }
}


El problema es cuando corro el script me dió error y no pude seguir, traté
de solucionarlo pero no he podido.



Saludos y muchas gracias!

Rodrigo.

[[alternative HTML version deleted]]







_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es