2016-11-25 44 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

@ 42,我知道这个问题是在这个网站的某个地方,但我真的很难找到正确的关键字,'累积' –

回答

1

我们需要cumsum的逻辑vectorV1 > 10),如果加1到它,它从0开始,并分配(:=)创建的“ID”列

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