2012-03-06 27 views
1

我想通過MemberID對這個數據集的行進行分組。我想通過索引對這個數據集的行進行分組,然後用普通索引對行進行求和

這是我的數據集的snipet「權利要求」:

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 

如果你能給我任何幫助我會很大ap對它進行優化。

+1

作爲一個方面說明,在清理你的格式時,我刪除了你的名字,因爲這是「官方政策」。用戶不鼓勵包含「謝謝」或其他簽名或標語。右下角的框用於此目的。這是一件小事;我通常不會打擾,除非我在那裏編輯其他的東西。 – joran 2012-03-06 22:57:28

回答

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 
+0

這樣做的工作,謝謝你的幫助 – 2012-03-06 23:16:47

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) 
相關問題