我有一个如下所示的数据集:
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/