У меня есть два фрейма данных, регистратор и df (время числовое):
logger <- data.frame(
time = c(1280248354:1280248413),
temp = runif(60,min=18,max=24.5)
)
df <- data.frame(
obs = c(1:10),
time = runif(10,min=1280248354,max=1280248413),
temp = NA
)
Я хотел бы выполнить поиск в logger $ time для ближайшего совпадения с каждой строкой в df $ time и назначить связанный logger $ temp для df $ temp. До сих пор мне удавалось использовать следующий цикл:
for (i in 1:length(df$time)){
closestto<-which.min(abs((logger$time) - (df$time[i])))
df$temp[i]<-logger$temp[closestto]
}
Однако теперь у меня есть большие кадры данных (регистратор имеет 13 620 строк, а df - 266 138), а время обработки велико. Я читал, что циклы - не самый эффективный способ делать что-то, но я не знаком с альтернативами. Есть ли более быстрый способ сделать это?
set.seed(x)
, гдеx
- любое целое число (большинство людей используют1
). Таким образом, каждый, кто копирует ваш пример, получит один и тот же набор данных. - person Simon O'Hanlon   schedule 13.11.2013