si les valeurs de deux colonnes sont identiques, modifier la valeur de la colonne résultante à NA et si tient pas à la valeur initiale de la colonne résultante - en utilisant R

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

  •  04-10-2019
  •  | 
  •  

Question

Cette question est similaire à la précédente.

Je fournirai cet exemple des données pour obtenir ma question sur.

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) 

Qu'est-ce que j'ai besoin est: si les valeurs de var1==var2, puis faire var3==NA mais si elles ne sont pas alors garder la valeur de var3. Serait heureux pour le faire en utilisant la fonction ifelse en R, mais d'autres options sont les bienvenus.

J'espère que la question est assez claire.

Cordialement, Bazon

Était-ce utile?

La solution

Une chose à prendre en compte avec ifelse est de savoir si la condition pourrait être NA. Dans votre cas, en utilisant le code exemple de David, si l'var1 ou var2 est NA, alors var3 va se mis à NA.

I soit mis à F NAs dans l'état, ou faire quelque chose comme:

var3 <- replace(var3, which(var1 == var2), NA)

Comparer:

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

Autres conseils

Cela devrait fonctionner aussi longtemps que il y a dans les deux vecteurs no NA:

var3 <- ifelse(var1 == var2, NA, var3)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top