使用data.table在每组数据之前插入一行

时间:2017-08-03 15:05:12

标签: r data.table

这可能是一个愚蠢的问题。但我想在每组数据之前插入一个角色。我在网上找到的就是如何在每组之后插入一行。此外,插入的行将具有表示每个ID的序列号。 例如,我有一个像

这样的数据表
df 
ID     TIME   VAR VALUE
101     07/02   V1     9
101     07/03   V2     NA
101     07/03   V3     10
221     06/01   V1     2
221     07/03   V2     4

我想要类似的东西:

ID     TIME   VAR     VALUE
101       NA   sequence   1
101     07/02   V1        9
101     07/03   V2        NA
101     07/03   V3        10
221       NA   sequence   2
221     06/01   V1        2
221     07/03   V2        4

真实表有大约1400万行,有14,000个唯一ID。有更新表的快速方法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

可能会更快,因为它是散装的rbind:

> tbl[, .SD
      ][, .N, ID
      ][, VALUE := .I
      ][, VAR := 'sequence'
      ][, N := NULL
      ][, rbind(.SD, tbl, fill=T)
      ][order(ID, VAR != 'sequence', TIME)
      ][, .(ID, TIME, VAR, VALUE)
      ]

    ID  TIME      VAR VALUE
1: 101    NA sequence     1
2: 101 07/02       V1     9
3: 101 07/03       V2    NA
4: 101 07/03       V3    10
5: 221    NA sequence     2
6: 221 06/01       V1     2
7: 221 07/03       V2     4
>