使用data.table将字符串的factor变量转换为整数列表

Luk*_*uke 4 r data.table

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

group
 005j         
 005j         
 0k16         
 0fff       
 0fff
Run Code Online (Sandbox Code Playgroud)

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

group   intCode
 005j      1   
 005j      1   
 0k16      2   
 0fff      3 
 0fff      3
Run Code Online (Sandbox Code Playgroud)

我可以通过循环来做到这一点,但它会非常慢.

Sim*_*lon 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
Run Code Online (Sandbox Code Playgroud)

引用帮助?data.table......

.GRPinteger,length如图1所示,含有一个简单的组计数器.第1组1个,第2组2个,等等.