R:按总和汇总包含 NA 的列值,同时按 ID 分组

标签 r data.table aggregate plyr dplyr

我有一个数据框,我从

ID <- c("A","A","A","A","B","B","B","B") 
Type <- c(45,45,46,46,45,45,46,46)
Point_A <- c(10,NA,30,40,NA,80,NA,100) 
Point_B <- c(NA,32,43,NA,65,11,NA,53)
df <- data.frame(ID,Type,Point_A,Point_B)

    ID  Type    Point_A Point_B
1   A   45        10    NA
2   A   45        NA    32
3   A   46        30    43
4   A   46        40    NA
5   B   45        NA    65
6   B   45        80    11
7   B   46        NA    NA
8   B   46       100    53

虽然我从中学到了post ,我可以汇总带有 ID 和一列的数据。

我目前正在使用 sqldf 按 ID 和类型对行和组求和。虽然这对我有用,但在更大的数据集上它非常慢。
    df1 <- sqldf("SELECT ID, Type, Sum(Point_A) as Point_A, Sum(Point_A) as Point_A 
                  FROM df 
                  GROUP BY ID, Type")

请建议使用可以解决此问题的任何其他技术。我已经开始学习 dplyr 和 plyr 包,我觉得它很有趣,但不知道如何在这里应用它。

期望输出
    ID  Type    Point_A Point_B
1   A   45        10    32
2   A   46        70    43
3   B   45        80    76
4   B   46       100    53

最佳答案

library(data.table)

DT <- as.data.table(df)
DT[, lapply(.SD, sum, na.rm=TRUE), by=list(ID, Type)]

   ID Type Point_A Point_B
1:  A   45      10      32
2:  A   46      70      43
3:  B   45      80      76
4:  B   46     100      53

关于R:按总和汇总包含 NA 的列值,同时按 ID 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30248762/

相关文章:

r - 如何对每个唯一因子值使用一次应用函数

r - base::url 读取网页但 xml2::read_html 给出 404 错误

r - 在 `j`中的 `data.table`表达式中评估列名和目标值

r - 如何在 data.table 包中实现列表构造函数的点 (.) 别名?

r - 用新数据框中的数据插入 NA

r - data.table 按 2 周或 6 个月分组

r - dplyr 中的分组均值

linux - 按 wc 结果分组

repository - 存储库中聚合对象的正确重构?

r - 使用 ggplot 将图例添加到单折线图