2016-11-25 22 views
1

複数の列の条件に基づいてグループを識別する明確な方法を試しています。一例として、r条件に基づいてグループを特定する

は、我々は、日付と別の数値列が注文したポイントのテーブルを持っていると想像:

DT <- data.table(a = paste0("Date", 1:10), V1 = c(1, 2, 11, 9, 11, 11, 2, 2, 11, 11)) 

     a V1 
1: Date1 1 
2: Date2 2 
3: Date3 11 
4: Date4 9 
5: Date5 11 
6: Date6 11 
7: Date7 2 
8: Date8 2 
9: Date9 11 
10: Date10 11 

たびに、我々は次の表を取得し、新たなグループを持っているV1 > 10の値:

  a V1 ID 
1: Date1 1 1 
2: Date2 2 1 
3: Date3 11 2 
4: Date4 9 2 
5: Date5 11 3 
6: Date6 11 4 
7: Date7 2 4 
8: Date8 2 4 
9: Date9 11 5 
10: Date10 11 6 

テーブルは300万ポイント以上ありますのでループはしないでください。どんな助け?どうもありがとうございました!!!

+0

が、私はこの質問を知っていた「ID」列を作成し、それが0から始まる場合にはそれに1を追加し、(:=)を割り当てる論理vectorV1 > 10)にcumsumを必要としますこのサイトのどこかで、私は本当に苦労して正しいキーワードを見つけました、「累積的」 –

答えて

1

は、我々は42 @

DT[, ID := cumsum(V1>10)+1] 
DT$ID 
#[1] 1 1 2 2 3 4 4 4 5 6 
+0

私は簡単な方法があることを知っていました!私は 'と'インデックスと闘っていた!ありがとうございます –

+0

@GeraldT問題ありません。あなたを助けてうれしい。また、[this](http://stackoverflow.com/help/someone-answers)を読むこともできます。 – akrun