【问题标题】:data.table index of subset子集的data.table索引
【发布时间】:2016-03-12 16:12:13
【问题描述】:

使用 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) - 我的真实数据集比较大。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

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

    dt[, Grp := rleid(x2)]
    

    或者如果我们需要基于'x1'和'x2'的组号,可以使用.GRP。

    dt[,  Grp := .GRP,.(x1, x2)]
    

    或者这可以在没有by 的情况下单独使用rleid 来完成(正如@Frank 提到的)

    dt[, Grp := rleid(x1,x2)]
    

    【讨论】:

    • .GRP 对我来说可能更直观,但两者都有效
    猜你喜欢
    • 2019-08-12
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2016-07-03
    • 2013-01-08
    • 2011-07-26
    相关资源
    最近更新 更多