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

StackOverflow https://stackoverflow.com/questions/3783582

  •  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

War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top