Rodrigo López Correa
2013-Jul-29 18:52 UTC
[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]]
Marcuzzi, Javier Rubén
2013-Jul-29 19:09 UTC
[R-es] duda reemplazar valores en data frame según condición
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
Jorge I Velez
2013-Jul-29 20:02 UTC
[R-es] duda reemplazar valores en data frame según condición
?cut --JIV 2013/7/30 Rodrigo López Correa <rod99hare@gmail.com>> 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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Rodrigo López Correa
2013-Aug-01 15:20 UTC
[R-es] duda reemplazar valores en data frame según condición
Estimados Javier y Jorge gracias por el material y la ayuda con eso pude armar el script y solucionar el problema! Básicamente lo solucioné con este script: titulo[tabla<=a["1%"]]<-"1%" titulo[tabla<=a["5%"] & tabla>a["1%"]]<-"5%" titulo[tabla<=a["10%"] & tabla>a["5%"]]<-"10%" titulo[tabla<=a["25%"] & tabla>a["10%"]]<-"25%" titulo[tabla<=a["50%"] & tabla>a["25%"]]<-"50%" titulo[tabla<=a["75%"] & tabla>a["50%"]]<-"75%" titulo[tabla<=a["90%"] & tabla>a["75%"]]<-"90%" titulo[tabla<=a["95%"] & tabla>a["90%"]]<-"95%" titulo[tabla>a["95%"]]<-"99%" Saludos, Rodrigo. [[alternative HTML version deleted]]