根据R中列的值序列创建索引列

时间:2019-02-27 03:05:49

标签: r indexing data.table sequence

我正在使用R中的一个非常大的data.table,并且试图创建一个索引列,该索引列基于另一列中的值序列-或者更好的是,在列中再次出现一个值。下面是带有示例代码的示例:

temp = data.table(
  col1 = c("A","A","A","A","A","B","B","B", "B", "B", "B"),
  col2 = c(1,   0,  0,  1,  0,  1,  0,  1,   0,   0,   1)
)

这将产生一个如下所示的数据集:

col1  col2
A     1         
A     0         
A     0         
A     1         
A     0         
B     1         
B     0         
B     1         
B     0         
B     0 
B     1

我需要创建一个看起来像这样的索引列(最好使用data.table术语):

col1  col2  col3
A     1     1       
A     0     1       
A     0     1       
A     1     2       
A     0     2       
B     1     3       
B     0     3       
B     1     4       
B     0     4       
B     0     4   
B     1     5

我是不熟悉data.tables的新手,也无法在Slack或其他各种帮助站点上找到任何内容,这些站点无法提供关于如何基于在另一列中重新出现的值来创建索引列的线索。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

除非我误解了,否则这似乎只是(基数R)cumsum的简单问题?

temp[, col3 := cumsum(col2)]
#    col1 col2 col3
# 1:    A    1    1
# 2:    A    0    1
# 3:    A    0    1
# 4:    A    1    2
# 5:    A    0    2
# 6:    B    1    3
# 7:    B    0    3
# 8:    B    1    4
# 9:    B    0    4
#10:    B    0    4
#11:    B    1    5