【发布时间】:2013-06-14 10:42:15
【问题描述】:
这是我要解决的一个问题。比如说,我有两个数据框,如下所示:
observations <- data.frame(id = rep(rep(c(1,2,3,4), each=5), 5),
time = c(rep(1:5,4), rep(6:10,4), rep(11:15,4), rep(16:20,4), rep(21:25,4)),
measurement = rnorm(100,5,7))
sampletimes <- data.frame(location = letters[1:20],
id = rep(1:4,5),
time1 = rep(c(2,7,12,17,22), each=4),
time2 = rep(c(4,9,14,19,24), each=4))
它们都包含一个名为id 的列,用于链接数据框。我想让measurements 来自observationss for whichtimeis betweentime1andtime2from thesampletimesdata frame. Additionally, I'd like to connect the appropriatelocation` 到每个测量。
我通过将sampletimes 转换为宽格式(即id 的每个条目在一行中的所有time1 和time2 信息)成功地做到了这一点,通过@987654333 合并两个数据框@ 变量,并使用条件语句仅在 time 位于行中至少一个时间间隔之间时获取实例,然后将 location 分配给适当的度量。
但是,我在 observations 中有大约 200 万行,这样做需要很长时间。我正在寻找一种更好的方法来保存长格式的数据。示例数据集非常简单,但实际上,我的数据包含每个id 的可变数量的间隔和位置。
对于我们的示例,我希望返回的数据框如下:
id time measurement letters[1:20]
1 3 10.5163892 a
2 3 5.5774119 b
3 3 10.5057060 c
4 3 14.1563179 d
1 8 2.2653761 e
2 8 -1.0905546 f
3 8 12.7434161 g
4 8 17.6129261 h
1 13 10.9234673 i
2 13 1.6974481 j
3 13 -0.3664951 k
4 13 13.8792198 l
1 18 6.5038847 m
2 18 1.2032935 n
3 18 15.0889469 o
4 18 0.8934357 p
1 23 3.6864527 q
2 23 0.2404074 r
3 23 11.6028766 s
4 23 20.7466908 t
【问题讨论】: