首页 > 解决方案 > 当多个逻辑向量为真时,是否有 R 函数来创建变量?

问题描述

对于我的数据集,每个人都由一个唯一编号标识。我有四个逻辑向量表示一个人何时患有特定疾病。这些并不是相互排斥的,即人们可以同时患有多种疾病。我想创建一个额外的逻辑向量来指示某人何时患有多种疾病,以便下面的输出将是 FALSE、FALSE、FALSE、TRUE 的第五个变量

x <- c(1, 2, 3, 4)
logical_1 <- c(FALSE, TRUE, FALSE, TRUE) 
logical_2 <- c(FALSE, FALSE, FALSE, TRUE)
logical_3 <- c(FALSE, FALSE, FALSE, FALSE)
logical_4 <- c(TRUE, FALSE, FALSE, FALSE)

dataframe <- data.frame(x, logical_1, logical_2, logical_3, logical_4)

我不确定什么功能最适合执行此操作,因此任何基本指针都会有所帮助。

提前致谢。

标签: r

解决方案


在逻辑列上使用rowSums来计算每行中 TRUE 的数量,然后查看哪些行的 TRUE 值超过 1 个:

dataframe$result = rowSums(dataframe[2:5]) > 1
dataframe
#   x logical_1 logical_2 logical_3 logical_4 result
# 1 1     FALSE     FALSE     FALSE      TRUE  FALSE
# 2 2      TRUE     FALSE     FALSE     FALSE  FALSE
# 3 3     FALSE     FALSE     FALSE     FALSE  FALSE
# 4 4      TRUE      TRUE     FALSE     FALSE   TRUE

推荐阅读