在给定日期的向量中最近的日期

时间:2013-02-28 11:02:01

标签: r date closest which

我想确定给定日期的向量中最接近的日期。假设我有以下日期向量(有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 ...我的代码有什么问题?

3 个答案:

答案 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