2012-03-06 2 views
1

このデータセットの行をMemberIDでグループ化したいとします。このデータセットの行をIndexでグループ化し、共通のインデックスで行を合計したい場合

これは私のデータセット「クレーム」の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 

私に大きな助けを与えることができればそれをpreciate。あなたのデータを想定し

+1

書式を整理している間、あなたの名前は削除されました。これは、ここでは「公式ポリシー」です。ユーザーは「ありがとう」やその他の署名やタグラインを含めないことをお勧めします。右下のボックスは、その目的に役立ちます。それは小さなことです。とにかく他のものを編集していない限り、私は一般的に気にしません。 – joran

答えて

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

それは仕事をした、あなたの助けをありがとう –

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) 
関連する問題