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

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

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

https://stackoverflow.com/questions/71366155/

相关文章:

npm - 如何在计算机之间迁移已安装的 npm 包?

amazon-web-services - 如何放弃 AWS lambda 函数内联编辑器中的更改?

r - 在列 R 中包含列表元素

node.js - 在 Vue JS 项目上运行 npm run server 时出现错误

azure-functions - VS2022 无法创建 Azure Functions 项目

r - 一种扩展R向量的有效方法

r - 在 R 中每月计算唯一值

javascript - React.js,列表中的每个 child 都应该有一个唯一的 "key"

ruby-on-rails - 安装带有 native 扩展 Gem::Ext::BuildErro

kubernetes - 在 WSL2 中安装 Minikube 集群时无法访问已部署的服务