我想确定给定日期的向量中最接近的日期。假设我有以下日期向量(有5个随机日期):
coldate= as.Date(c("2013-08-03", "2013-09-04", "2013-09-08", "2013-09-12", "2013-11-01"));
现在,我想在此向量中找到距x = as.Date("2013-10-01")
最近的日期。
这是我的代码:
> which((coldate-x) == min(coldate-x))
[1] 1
结果应该是4,因为日期"2013-09-12"
是最接近的。但是,我有1 ...我的代码有什么问题?
答案 0 :(得分:17)
您错过abs
来处理负值:
which(abs(coldate-x) == min(abs(coldate - x)))
[1] 4
答案 1 :(得分:6)
另请参阅which.min
函数:
R> which.min(abs(x-coldate))
[1] 4
答案 2 :(得分:4)
which.closest()
包中的birk
函数是一个简单的选项。
coldate= as.Date(c("2013-08-03", "2013-09-04", "2013-09-08", "2013-09-12", "2013-11-01"))
x = as.Date("2013-10-01")
which.closest(coldate, x)
[1] 4