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

日付"2013-09-12"が最も近いため、結果は 4 になります。しかし、私は 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 に答える