data.table中的行号

问题描述 投票:0回答:1

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

   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)]

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

谢谢

r indexing datatable rank
1个回答
0
投票
dt[, nth := row.names(.SD), by = var1]
© www.soinside.com 2019 - 2024. All rights reserved.