【发布时间】:2018-10-05 02:57:33
【问题描述】:
我有一个包含许多列的数据框,要获得以下摘要需要大量手动工作。在示例数据集中,仅对于每个 con 列分别为“TRUE”的观察,需要计算 value 列的总和三次。
# sample dataset
df <- data.frame(
value = c(1:20),
con1 = c("TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE"),
con2 = c("FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE"),
con3 = c("FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "TRUE", "FALSE", "FALSE", "FALSE"))
手动过程可以这样完成:
df %>% group_by(con1) %>% summarise(value = sum(value))
在这种情况下,仅当 con1 列中的对应值为“TRUE”时,观察的 value 列的总和为 70。
结束的数据框应该是这样的:
data.frame(con1 = 70, con2 = 63, con3 = 57)
【问题讨论】:
-
你应该使用 R 的内置 TRUE/FALSE 而不是用“TRUE”/“FALSE”重新发明那个轮子。
标签: r filter dplyr conditional-statements multiple-columns