Il y a beaucoup de messages sur le remplacement des valeurs NA. Je sais qu'on peut remplacer les NA dans le tableau/cadre suivant par ce qui suit :
x[is.na(x)] < -0
Mais, que faire si je veux le restreindre à certaines colonnes uniquement? Permettez-moi de vous montrer un exemple.
Tout d'abord, commençons par un jeu de données.
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))
Ce qui donne :
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
D'accord, je veux simplement restreindre le remplacement aux colonnes 'a' et 'b'. Ma tentative a été la suivante :
x[is.na(x), 1:2] < -0
et :
x[is.na(x[1:2])] < -0
Ce qui ne fonctionne pas.
Ma tentative avec data.table, où y ← data.table(x)
, n'allait évidemment jamais fonctionner :
y[is.na(y[,list(a,b)]), ]
Je veux passer les colonnes à l'intérieur de l'argument is.na mais évidemment ça ne fonctionnerait pas.
Je voudrais faire cela dans un data.frame et une data.table. Mon objectif final est de recoder de 1 à 2 en 0 à 1 dans 'a' et 'b' tout en laissant 'c' tel qu'il est, car ce n'est pas une variable logique. J'ai plein de colonnes donc je ne veux pas le faire une par une. Et, je voudrais juste savoir comment faire cela.
Avez-vous des suggestions?