这是我试图解决的一个问题。说,我有两个数据框,如下所示:
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
,用于链接数据框。我想要measurement
从observationss for which
时间is between
time1 and
time2 from the
sampletimes data frame. Additionally, I'd like to connect the appropriate
location`到每次测量的 s。
我已经成功地做到了这一点,方法是将 my 转换sampletimes
为宽格式(即,每个条目的一行中的所有time1
和信息),通过变量合并两个数据帧,并使用条件语句仅在介于至少一个之间时采用条件语句行中的时间间隔,然后分配给适当的测量。 time2
id
id
time
location
但是,我有大约 200 万行,observations
这样做需要很长时间。我正在寻找一种更好的方法来保存长格式的数据。示例数据集非常简单,但实际上,我的数据包含可变数量的间隔和位置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