我有一个带有x
和date
Value
x = structure(list(date = structure(c(1376534700, 1411930800, 1461707400,
1478814300, 1467522000, 1451088000, 1449956100, 1414214400, 1472585400,
1418103000, 1466176500, 1434035100, 1442466300, 1410632100, 1448571900,
1439276400, 1468382700, 1476137400, 1413177300, 1438881300), class = c("POSIXct",
"POSIXt"), tzone = ""), Value = c(44L, 49L, 31L, 99L, 79L, 92L,
10L, 72L, 60L, 41L, 28L, 21L, 67L, 61L, 8L, 65L, 40L, 48L, 53L,
90L)), .Names = c("date", "Value"), row.names = c(NA, -20L), class = "data.frame")
以及仅包含y
date
y = structure(c(1470356820, 1440168960, 1379245020, 1441582800, 1381753740
), class = c("POSIXct", "POSIXt"), tzone = "")
在我尝试使用循环之前,我想知道是否有一种快速方式(或包)从Value
中的最近日期x
查找y
中的日期1}?目标是在date
中找到最接近x
date
的{{1}}并获取相应的y
。
所需的输出(来自Excel Value
,所以可能不完美)会是这样的:
VLOOKUP
答案 0 :(得分:2)
使用data.table
您可以加入最近的值
library(data.table)
x <- as.data.table(x)
y <- data.table(date=y)
res <- x[y, on='date', roll='nearest']
答案 1 :(得分:2)
sapply(y, function(z) x$Value[which.min(abs(x$date - z))])
# [1] 40 65 44 67 44