Es gibt viele Beiträge zum Ersetzen von NA-Werten. Mir ist bewusst, dass man NAs in der folgenden Tabelle / im folgenden Frame durch die folgenden ersetzen könnte:
x[is.na(x)]<-0
Aber was ist, wenn ich es nur auf bestimmte Spalten beschränken möchte? Lassen Sie mich Ihnen ein Beispiel zeigen.
Beginnen wir zunächst mit einem Datensatz.
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))
Welches gibt:
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, also möchte ich die Ersetzung nur auf die Spalten 'a' und 'b' beschränken. Mein Versuch war:
x[is.na(x), 1:2]<-0
und:
x[is.na(x[1:2])]<-0
Welches funktioniert nicht.
Mein data.table-Versuch, bei dem y<-data.table(x)
es offensichtlich nie funktionieren würde:
y[is.na(y[,list(a,b)]), ]
Ich möchte Spalten innerhalb des is.na-Arguments übergeben, aber das würde offensichtlich nicht funktionieren.
Ich möchte dies in einem data.frame und einer data.table tun. Mein Endziel ist es, das 1: 2 bis 0: 1 in 'a' und 'b' neu zu codieren, während 'c' so bleibt, wie es ist, da es keine logische Variable ist. Ich habe eine Reihe von Spalten, deshalb möchte ich es nicht einzeln tun. Und ich möchte nur wissen, wie das geht.
Hast du irgendwelche Vorschläge?