在R中使用data.table
包,我试图获取某些数据点的“组号”。
具体来说,我的数据是轨迹:我有很多行描述我正在跟踪的粒子的特定观察,我想根据我拥有的其他识别信息生成轨迹的特定索引。
如果我执行[, , 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)
- 我的实际数据集中等。
答案 0 :(得分:3)
如果我们需要基于'x2'的P(X) =
P(smoker)*
(P(being a man | smoker)/P(being a man))*
(P(under 20 | smoker)/ P(under 20))
(不知道这意味着什么),我们可以使用trajectories
rleid
或者如果我们需要基于'x1'和'x2'的组号,可以使用dt[, Grp := rleid(x2)]
。
.GRP
或者可以单独使用dt[, Grp := .GRP,.(x1, x2)]
而不使用rleid
(如提及@Frank)
by