R 子集的数据表索引

R 子集的数据表索引,r,data.table,R,Data.table,使用R中的data.tablepackage,我试图获得一些数据点的“组号”。 具体来说,我的数据是轨迹:我有许多行描述我正在跟踪的粒子的特定观测,我想根据我拥有的其他识别信息为轨迹生成特定索引。 如果我执行[,by]命令,我可以根据此标识信息对数据进行分组,并隔离每条轨迹。 是否有一种类似于.I或.N的方法,可以给出我所称的子集索引 以下是一个玩具数据示例: dt <- data.table(x1 = c(rep(1,4), rep(2,4)), x2 = c(1,1,2,2,1,1,2

使用R中的
data.table
package,我试图获得一些数据点的“组号”。 具体来说,我的数据是轨迹:我有许多行描述我正在跟踪的粒子的特定观测,我想根据我拥有的其他识别信息为轨迹生成特定索引。 如果我执行
[,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))

dt如果我们需要基于“x2”的
轨迹(不知道这是什么意思),我们可以使用
rleid

dt[, Grp := rleid(x2)]
或者,如果我们需要基于“x1”和“x2”的组号,则可以使用
.GRP

dt[,  Grp := .GRP,.(x1, x2)]
或者可以单独使用
rleid
,而不使用
by
(如@Frank所述)


.GRP
对我来说可能更直观,但两者都有效
dt[, Grp := rleid(x1,x2)]