Como substituir os valores de NA em uma tabela * para colunas selecionadas *? data.frame, data.table
Há muitos posts sobre como substituir os valores de NA. Estou ciente de que alguém poderia substituir NAs na seguinte tabela / frame com o seguinte:
x[is.na(x)]<-0
Mas, e se eu quiser restringi-lo apenas a certas colunas? Deixe-me mostrar um exemplo.
Primeiro, vamos começar com um conjunto de dados.
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))
Que dá:
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, só quero restringir a substituição às colunas 'a' e 'b'. Minha tentativa foi:
x[is.na(x), 1:2]<-0
e:
x[is.na(x[1:2])]<-0
Que não funciona.
Minha tentativa de data.table, ondey<-data.table(x)
, obviamente, nunca iria funcionar:
y[is.na(y[,list(a,b)]), ]
Eu quero passar colunas dentro do argumento is.na, mas isso obviamente não funcionaria.
Eu gostaria de fazer isso em um data.frame e um data.table. Meu objetivo final é recodificar o 1: 2 para 0: 1 em 'a' e 'b' enquanto mantém 'c' como está, já que não é uma variável lógica. Eu tenho um monte de colunas, então eu não quero fazer isso uma por uma. E gostaria apenas de saber como fazer isso.
Você tem alguma sugestão?