wenn Werte von zwei Spalten gleich sind, den Wert der sich ergebenden Spalte NA ändern und wenn nicht auf den ursprünglichen Wert der resultierenden Spalte halten - R unter Verwendung von
-
04-10-2019 - |
Frage
Diese Frage ist ähnlich wie die vorherigen.
Ich bin dieses Beispiel Daten Bereitstellung über meine Frage zu bekommen.
id=c(1,2,3,4,5,6,7,8,9,10)
var1=c(0,1,2,0,6,9,0,0,3,0)
var2=c(0,0,2,3,0,0,0,5,0,0)
var3=c(0,1,4,3,6,9,0,5,3,0)
data=data.frame(id,var1,var2, var3)
Was ich brauche, ist:
wenn Werte von var1==var2
, dann var3==NA
machen, aber wenn sie dann nicht halten den Wert von var3
.
Würde sich freuen, es zu tun zu bekommen, die ifelse
Funktion in R verwenden, aber andere Optionen sind willkommen.
Ich hoffe, dass die Frage klar genug ist.
Viele Grüße, Bazon
Lösung
Eine Sache bewusst zu sein, mit ifelse ist, ob die Bedingung NA sein könnte. In Ihrem Fall mit Davids Beispielcode, wenn entweder var1 oder var2 NA, dann wird var3 auf NA gesetzt bekommen.
ich entweder NAs bis F in den Zustand versetzt, oder so etwas wie:
var3 <- replace(var3, which(var1 == var2), NA)
vergleichen:
data$var1[1] = NA
with(data, ifelse(var1 == var2, NA, var3))
# [1] NA 1 NA 3 6 9 NA 5 3 NA
with(data, replace(var3, which(var1 == var2), NA))
# [1] 0 1 NA 3 6 9 NA 5 3 NA
Andere Tipps
Dies sollte funktionieren, solange es gibt keine NA in den beiden Vektoren:
var3 <- ifelse(var1 == var2, NA, var3)