在R中分组(在一个表中分组并将其与另一个表匹配)

时间:2014-07-03 10:51:13

标签: r

我在表A中的R中有以下数据集

ID  Balance
1   100  
1   200 
2   200
3   500
4   900
4   400
4   300
5   500

我有另一个表B只有唯一的ID(1,2,3,4,5)。我想按表A中的ID和总和余额进行分组,并将其放在表B中(添加新的列余额)。像这样的东西:

ID  Balance
1    300
2    200
3    500
4    1600
5    500

请你帮我解决这个问题。谢谢!!

2 个答案:

答案 0 :(得分:2)

data.table解决方案

setkey(setDT(A), ID)
setkey(setDT(B), ID)
B <- B[A[, list(Balance = sum(Balance)), by = ID]]

基础R解决方案

B <- merge(B, aggregate(Balance ~ ID, A, sum), by = "ID")

答案 1 :(得分:1)

dplyr解决方案:

library(dplyr)
B <- A %>%
  group_by(ID) %>%
  summarise(Balance=sum(Balance))

使用plyr包可以获得相同的结果:

library(plyr)
B <- ddply(A, .(ID), summarise, Balance=sum(Balance))

警告:请勿将dplyrplyr个软件包加载到一起!使用其中一种。