使用data.table
R中的程序包,我试图获取某些数据点的“组号”。具体来说,我的数据是轨迹:我有很多行描述了我正在跟踪的粒子的特定观察结果,并且我想基于我拥有的其他标识信息为该轨迹生成特定的索引。如果执行[, , by]
命令,则可以根据此标识信息对数据进行分组,并隔离每个轨迹。有没有一种类似于.I
或的方式.N
给出我称为子集索引的方式?
这是玩具数据的示例:
dt <- data.table(x1 = c(rep(1,4), rep(2,4)),
x2 = c(1,1,2,2,1,1,2,2),
z = runif(8))
我需要一种快速获得轨迹的方法(这里应该c(1,1,2,2,3,3,4,4)
针对每个观察值-我的真实数据集适中。
如果我们需要trajectories
基于'x2'的(不要意思),我们可以使用rleid
dt[, Grp := rleid(x2)]
或者,如果我们需要基于“ x1”和“ x2”的组号,.GRP
则可以使用。
dt[, Grp := .GRP,.(x1, x2)]
或者可以单独使用rleid
而无需使用by
(如@Frank所述)
dt[, Grp := rleid(x1,x2)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句