通过循环一次将R中的三个(或更多)变量与ifelse进行比较

下雪了

我想比较三个变量。如果所有结果都相同(例如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等于yANDy等于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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java 8中将一个日期与三个或三个以上的日期进行比较?

在一个变量上使用循环将第二个变量的值保留在R中的第三个变量中

如何通过R中的三个变量对数据框进行排序和计数?

如何仅在每次可用数据时一次将三个项目附加到一行中?

每三个循环添加一次容器div结束

在每三个帖子后重新运行一次循环吗?(WordPress)

如何在循环中一次访问三个元素?

使用python 3中的链接列表进行三个(或更多)不同变量分配的操作顺序

如何使用ifelse将多个变量与r中的一个比较?

布尔之比较 - 试图三个字符一次在Java中比较

为什么将三个变量与==进行比较得出false?

Hibernate - 一次保存映射三个表

如何三个查询执行一次

如何在SQL Server 2012中一次插入三个表

Ifelse()在R中具有三个条件

将 Python pandas 中的三个数据框与重复条目进行比较

我可以使用三个“或”逻辑运算符与 PHP 中的一个变量进行比较吗

使用R中的第三个变量列表对多个变量进行突变

如何一次将两列与 python (pandas) 中的两个不同数据框进行比较?

如何遍历三个或更多列表,并将每个列表与每个元素进行比较?

如何通过比较同一行上的三个变量来返回布尔值?

比较if语句上的三个变量

如何添加通过对R中的三个列表进行操作而生成的矩阵?

以所有可能的组合一次使用两个变量进行循环-UNIX

如何通过三个或更多 zsh 程序传递变量?

如何通过与 Python 3 中的另一个列表进行比较,从列表中只弹出一次重复项

尝试将列表 A 中的项目与列表 B 中的项目进行比较,然后返回第三个列表

在 R 中使用 while 循环在三个迭代中打印三个单词

如何仅将 C 中 for 循环中的三个最大整数分配给三个单独的变量?