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

Hen*_*nri 15 r date which closest

我想确定给定日期的向量中最接近的日期.假设我有以下日期向量(有5个随机日期):

coldate= as.Date(c("2013-08-03", "2013-09-04", "2013-09-08", "2013-09-12", "2013-11-01"));
Run Code Online (Sandbox Code Playgroud)

现在,我想x = as.Date("2013-10-01")在这个向量中找到最接近的日期.

这是我的代码:

> which((coldate-x) == min(coldate-x))
  [1] 1
Run Code Online (Sandbox Code Playgroud)

结果应该是4,因为日期"2013-09-12"是最接近的.但是,我有1 ...我的代码有什么问题?

Aru*_*run 19

你错过了abs照顾负面价值观:

which(abs(coldate-x) == min(abs(coldate - x)))
[1] 4
Run Code Online (Sandbox Code Playgroud)

  • @Henri - 从'min`函数中删除NA:`which(abs(coldate-x)== min(abs(coldate-x),na.rm = TRUE)) (3认同)

rcs*_*rcs 6

另见which.min功能:

R> which.min(abs(x-coldate))
[1] 4
Run Code Online (Sandbox Code Playgroud)


Cep*_*irk 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
Run Code Online (Sandbox Code Playgroud)