Hay muchas publicaciones sobre cómo reemplazar los valores de NA. Soy consciente de que se podrían reemplazar las NA en la siguiente tabla / marco con lo siguiente:
x[is.na(x)]<-0
Pero, ¿qué pasa si quiero restringirlo solo a ciertas columnas? Déjame mostrarte un ejemplo.
Primero, comencemos con un conjunto de datos.
set.seed(1234)
x <- data.frame(a=sample(c(1,2,NA), 10, replace=T),
b=sample(c(1,2,NA), 10, replace=T),
c=sample(c(1:5,NA), 10, replace=T))
Lo que da:
a b c
1 1 NA 2
2 2 2 2
3 2 1 1
4 2 NA 1
5 NA 1 2
6 2 NA 5
7 1 1 4
8 1 1 NA
9 2 1 5
10 2 1 1
Ok, entonces solo quiero restringir el reemplazo a las columnas 'a' y 'b'. Mi intento fue:
x[is.na(x), 1:2]<-0
y:
x[is.na(x[1:2])]<-0
Que no funciona.
Mi intento de data.table, donde y<-data.table(x)
, obviamente, nunca iba a funcionar:
y[is.na(y[,list(a,b)]), ]
Quiero pasar columnas dentro del argumento is.na, pero eso obviamente no funcionaría.
Me gustaría hacer esto en un data.frame y un data.table. Mi objetivo final es recodificar el 1: 2 a 0: 1 en 'a' y 'b' manteniendo 'c' como está, ya que no es una variable lógica. Tengo un montón de columnas, así que no quiero hacerlo una por una. Y me gustaría saber cómo hacer esto.
¿Tienes alguna sugerencia?