我想按索引对此数据集的行进行分组,然后按公共索引对行进行求和

时间:2012-03-06 22:38:47

标签: r dataset sum grouping

我想通过MemberID对此数据集的行进行分组。

这是我的数据集“声明”的狙击:

  MemberID    SopLos    DIH
1     54         0       1
2     55         1       2
3     56         2       3  
4     67         0       5
5     55         1       1
6     54         0       1
7     55         1       2
8     56         2       3  
9     67         0       5
10    55         1       1

我想要的数据框:

  MemberID    SopLos    DIH
1     54         0       1
2     54         0       1
3     55         1       1
4     55         1       2
5     55         1       1
6     55         1       2
7     56         2       3  
8     56         2       3  
9     67         0       5
10    67         0       5

然后我想按公共ID对行进行求和 产生以下数据框

 MemberID    SopLos    DIH
1     54         0       2
2     55         4       6  
3     56         4       6  
4     67         0       10

如果你能给我任何帮助,我将非常感激。

2 个答案:

答案 0 :(得分:2)

假设您的数据位于名为dat的数据框中:

require(plyr)
ddply(dat,.(MemberID),summarise,SopLos = sum(SopLos),DIH = sum(DIH))
  MemberID SopLos DIH
1       54      0   2
2       55      4   6
3       56      4   6
4       67      0  10

答案 1 :(得分:2)

由于我目前只有基本功能可用,这是另一种解决方案。 假设您的数据位于名为df的数据框中:

aggregate(df[c("SopLos","DIH")],list(MemberId = df$MemberID),sum)

  MemberId SopLos DIH
1       54      0   2
2       55      4   6
3       56      4   6
4       67      0  10

如果你有很多要求的变量或经常变化的数据集而你不希望输入所有的名字,你也可以尝试:

aggregate(df[-(grep("^MemberID$",names(df)))],list(MemberId = df$MemberID),sum)