使用data.table,在范围内优化匹配,然后对所选数据执行功能

时间:2016-11-24 21:54:51

标签: r data.table matching

假设我有一系列测量的data.tables,如下所示:

raw = rbind(
  data.table(id = "first", seq = 1:100, val1 = runif(100), val2 = runif(100)),
  data.table(id = "second", seq = 1:100, val1 = runif(100), val2 = runif(100))
  )

带有一个伴随的data.table,它突出了感兴趣序列的部分内容。

timings = data.table(id = c("first", "first", "second"),
                    start = c(5, 50, 9),
                    end = c(10, 60, 19))

通过每个id搜索data.table的方式是什么,查找起始值和结束值之间的seq值。然后计算val1和val2的相关平均值?

这样我的结果表看起来像:

       id start end mean_val1  mean_val2
1:  first     5  10 0.2645239 0.02060684
2:  first    50  60 0.6795851 0.90318952
3: second     9  19 0.3591886 0.26836045

虽然我知道如何通过一些循环来完成这样的事情,但那不是很好。而且我的桌子实际上相当大。

什么是data.table方法?

0 个答案:

没有答案