Zeilenwerte, die von is.na abhängig sind, in einer anderen Spalte ersetzen
Simple logisches Ersetzungsproblem; Ich habe einen Datenrahmen wie:
mydf <- expand.grid(var1 = c('type1', 'type2'), var2 = c(7, 6, "NA"), var3 = 9)
Ich möchte die Werte in var3 durch die Werte in var2 ersetzen, es sei denn, var2 ist NA. Das resultierende neue var3 sollte also 7,7,6,6, NA, NA sein. Wenn ich versuche, darauf zu kommen, bemerke ich, dass
mydf$var3[mydf$var2 == 7] <- 5
identifiziert die Zeilen 1 und 2 von mydf korrekt als zu ersetzend und lässt die letzten vier Zeilen alleine, so dass ich var3 = 5,5,9,9,9,9 erhalte. Allerdings, wenn ich versuche,
mydf$var3[!is.na(mydf$var2)] <- 5
Ich erhalte var3 = 5,5,5,5,5,5. Warum hat es die letzten beiden Zeilen nicht übersprungen, in denen var2 NA war? Das nächste Problem ist, dass Sie nicht wissen, wie Sie die Ersatzwerte auf var2 anstatt auf eine Konstante setzen können. Wenn ich es versuche
mydf$var3[!is.na(mydf$var2)] <- mydf$var2
Ich erhalte var3 = 1,1,2,2,3,3. Was ich überhaupt nicht verstehe.