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
-
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
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)