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]]