eliminar - filtrar datos en r
Reemplace los valores en las columnas seleccionadas pasando el nombre de columna de data.frame a apply() o a la funciĆ³n plyr (2)
Supongamos que tengo una fecha. Marco como:
df <- data.frame(a=1:5, b=sample(1:5, 5, replace=TRUE), c=5:1)
df
a b c
1 1 4 5
2 2 3 4
3 3 5 3
4 4 2 2
5 5 1 1
y necesito reemplazar todos los 5
como NA
en la columna c
luego regresar a df
:
df
a b c
1 1 4 NA
2 2 3 4
3 3 NA 3
4 4 2 2
5 5 1 1
Pero quiero hacer una función genérica apply()
lugar de usar replace()
cada una porque en realidad hay muchas variables que deben ser reemplazadas en los datos reales. Supongamos que he definido una lista de variables:
var <- c("b", "c")
y llegar a algo como:
df <- within(df, sapply(var, function(x) x <- replace(x, x==5, NA)))
pero nada pasa. Estaba pensando si hay una manera de resolver esto con algo similar a lo anterior al pasar una lista variable de nombres de columna de un data.frame a una función genérica apply / plyr
(o tal vez de alguna otra manera completamente diferente). Gracias ~
Podrías hacer
df[,var][df[,var] == 5] <- NA
df <- data.frame(a=1:5, b=sample(1:5, 5, replace=TRUE), c=5:1)
df
var <- c("b","c")
df[,var] <- sapply(df[,var],function(x) ifelse(x==5,NA,x))
df
Encuentro que la notación ifelse es más fácil de entender aquí, pero la mayoría de los Rers probablemente usarían indización en su lugar.