data.table中的行号

时间:2018-02-28 14:47:55

标签: r indexing datatable rank

我有这个简单的任务,想象我有这张表:

   var1
1:    X
2:    X
3:    Y
4:    X
5:    Z
6:    Y

我想创建一个像这样的新变量:

   var1 nth
1:    X   1
2:    X   2
3:    Y   1
4:    X   3
5:    Z   1
6:    Y   2

实际上我有很多变数很多。 所以我的实际解决方案是(效果很好):

dt[, flag := 1]
dt[, nth := frank(flag, ties.method = "random"), by = .(var1)]

但这很慢,我对排名并不感兴趣。(坦率的排序和排名,我只需要一个简单的索引)。

我想象这个解决方案,但不起作用:

dt[, pos := .I, by = .(var1)]

您是否有任何快速而直接的解决方案来完成此任务?

谢谢

1 个答案:

答案 0 :(得分:0)

md-tabs