gpt4 book ai didi

r - 使用循环一次比较 R 中的三个(或更多)变量与 ifelse

转载 作者:行者123 更新时间:2023-12-04 16:38:07 24 4
gpt4 key购买 nike

我想比较三个变量。如果所有结果都相同(例如 0, 0, 0 和 2, 2, 2),则返回一个值(例如“匹配”)。

我试试这个:


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

Error: unexpected '==' in "ifelse(df_1$x == df_1$y =="



但它不起作用。谢谢。

最佳答案

您需要一个 &在那里,所以 df_1$x == df_1$y & df_1$y == df_1$z ,即 x等于 yy等于 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)

关于r - 使用循环一次比较 R 中的三个(或更多)变量与 ifelse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58654514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com