我想比较三个变量。如果所有结果都相同(例如0、0、0和2、2、2),则返回一个值(例如“ match”)。
我尝试这样:
df_1 <- data.frame(
x = c(0, 1, 0, 2, 0),
y = c(0, 2, 1, 2, 1),
z = c(0, 2, 1, 2, 1)
)
ifelse(df_1$x == df_1$y == df_1$z, 'match', 'not')
错误:“ ifelse(df_1 $ x == df_1 $ y ==”中出现意外的'=='
但这是行不通的。谢谢。
您需要&
在其中df_1$x == df_1$y & df_1$y == df_1$z
,即x
等于y
ANDy
等于x
。您也不需要ifelse
这种比较。只需进行比较,然后将输出添加到数据框即可:
df_1$match <- df_1$x == df_1$y & df_1$y == df_1$z
#### OUTPUT ####
x y z match
1 0 0 0 TRUE
2 1 2 2 FALSE
3 0 1 1 FALSE
4 2 2 2 TRUE
5 0 1 1 FALSE
但是,如果您确实希望“匹配”一个“不”,您也可以这样做:
df_1$match <- ifelse(df_1$x == df_1$y & df_1$y == df_1$z, "matched", "not")
#### OUTPUT ####
x y z match
1 0 0 0 match
2 1 2 2 not
3 0 1 1 not
4 2 2 2 match
5 0 1 1 not
根据评论编辑:
对于任意数量的变量,您可以尝试这样的方法,该方法检查unique
仅返回一个值,即所有值相等:
df_1$match <- apply(df_1, 1, function(r) length(unique(r)) == 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句