0
我想从另一个数据帧中填充一个数据帧,这取决于第一个数据是否适合第二个数据块的时间间隔。加入两个数据框,其中一个日期落入另一个日期中。 R
现在,我正在做一个嵌套for循环,但不用说,这种方法是痛苦的缓慢。
下面是一些样本数据和我的嵌套的for循环:
library(lubridate)
periods <- structure(list(week = structure(c(16475, 16489, 16531, 16545,16559, 16573, 16587, 16615, 16629, 16643, 16657, 16671, 16685,
16699, 16727, 16741, 16755, 16769, 16783, 16797, 16811, 16825
), class = "Date"), poll = c(6.5, 4, 12, 11.5, 13, 9.5, 7, 8,
4.5, 4.5, 7.5, 4.8, 6.33333333333333, 7.5, 11.125, 13, 12, 12.8571428571429,
10.5, 13, 11, 4)), .Names = c("week", "poll"), row.names = 82:103, class = "data.frame")
periods$week <- as.interval(ymd(period$week), ymd(period$week + weeks(2)))
weeks <- structure(list(week = structure(c(16720, 16622, 16776, 16720,
16734, 16741), class = "Date"), poll = c(NA, NA, NA, NA, NA,
13)), .Names = c("week", "poll"), row.names = c(NA, 6L), class = "data.frame")
for (i in seq_along(weeks$week)){
x <- weeks$week[i]
for (j in seq_along(periods$int)){
if (is.na(x)==T){next}
else if (x %within% periods$int[j]==T){weeks$poll <- periods[j,2]}
else {next}
}
}
我假设有一个应用的功能,将加快这,但我似乎无法使它工作...谢谢多为所有的帮助!
看看package data.table及其''foverlaps'函数。 – Roland
你确定这段代码能正常工作吗?句点$ int [j]是if else子句中的类数字,%中的%不起作用。 – kostas
它看起来像使用dput输出使用lubridate包创建的数据不起作用。我将编辑帖子,以使可重复数据更清晰 – StanO