21

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

4

3 回答 3

28

你错过了abs照顾负值:

which(abs(coldate-x) == min(abs(coldate - x)))
[1] 4
于 2013-02-28T11:05:38.933 回答
9

另见which.min函数:

R> which.min(abs(x-coldate))
[1] 4
于 2013-02-28T12:49:55.110 回答
6

包中的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
于 2016-02-26T17:03:02.180 回答