4

我正在尝试使用 data.table 将因子变量重新编码为整数。鉴于:

group
 005j         
 005j         
 0k16         
 0fff       
 0fff

我想得到一系列代表相同分组的递增整数:

group   intCode
 005j      1   
 005j      1   
 0k16      2   
 0fff      3 
 0fff      3

我可以用一个循环来做到这一点,但它会非常慢。

4

1 回答 1

10

您可以简单地使用表达式中.GRP可用的符号j,使用by = group...定义的组

dt[ , intCode := .GRP , by = group ]
dt
#   group intCode
#1:  005j       1
#2:  005j       1
#3:  0k16       2
#4:  0fff       3
#5:  0fff       3

引用帮助?data.table...

.GRP是一个1 integerlength包含一个简单的组计数器。第 1 组 1 个,第 2 组 2 个,依此类推。

于 2013-11-13T22:43:38.807 回答