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

group
 005j
 005j
 0k16
 0fff
 0fff


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

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


我可以通过循环执行此操作,但速度会非常慢。

最佳答案

您可以简单地使用.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的帮助...


.GRPintegerlength 1,包含一个简单的组计数器。第一组为1,第二组为2,依此类推。

08-24 18:05