R - 如何将多个 bool 列(不知道有多少)组合成一列

标签 r

我有一个如下所示的数据集:

df1 <- data.frame(
  date = c(20200101, 20200102, 20200103,20200104,20200105,20200106), 
  z_score = c(TRUE, TRUE, TRUE, FALSE, FALSE, TRUE), 
  mad_score = c(FALSE, TRUE, TRUE, TRUE, TRUE, TRUE),
  history_error = c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE),
  manual = c(TRUE, TRUE, TRUE, TRUE, FALSE, TRUE)
)

结果需要喜欢:

      date final_result
1 20200101        FALSE
2 20200102         TRUE
3 20200103         TRUE
4 20200104        FALSE
5 20200105        FALSE
6 20200106         TRUE

我可以通过取消转换为长格式并将 bool 列汇总为:

df1_result <- df1 %>% 
  pivot_longer(!date, names_to = "conditions", values_to = "T_or_F") %>% 
  group_by(date) %>% 
  summarise(T_or_F = as.logical(prod(T_or_F)))

我觉得一定有更简单的方法来做到这一点。我在论坛中搜索了解决方案,发现了很多类似问题的 1-liner。我只是无法将那些优雅的 1-liner 复制到我的问题中。

最佳答案

这是一个只使用 base R 的 one liner

data.frame(df1[1], final_result = apply(df1[-1], 1, \(x) sum(x) == 4))
#>       date final_result
#> 1 20200101        FALSE
#> 2 20200102         TRUE
#> 3 20200103         TRUE
#> 4 20200104        FALSE
#> 5 20200105        FALSE
#> 6 20200106         TRUE

关于R - 如何将多个 bool 列(不知道有多少)组合成一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71366155/

相关文章:

r - 如何在 R 中编写 Mood 中值检验的排列等价代码? (使用排列获得 p 值)

r - 如何在要重复 5000 次的 for 循环中找到相关系数?并保存统计

r - 如何在ggplot facet_wrap文本中添加数学符号?

r - 图例中的 ggplot2 虚线未正确显示

r - 根据列索引向量选择 data.table 值

r - 在 R 中向数据框添加缺少的小时数

function - R:使用分位数 0.05 和 0.95 对数据框中的每一列进行异常值清理

r - 如何标记R中特定行周围的任何值范围?

r - 在 ggplot 方面添加标签

r - R 中任意点的精确核密度值