4

最も近い日付を見つけるために、私は持っています:

closestDate <- function(searchDate, dateList, roundDown=FALSE) {
              as.Date(sapply(as.Date(searchDate), function(x){
                dist <- abs(x - as.Date(dateList))
                closest <- dateList[which(min(dist) == dist)]
                return(ifelse(roundDown, min(closest), max(closest)))
              }), origin="1970-1-1")
            }

いつ:

> nonNAdays
[1] "2011-08-15" "2011-08-18" "2011-08-19"

私は得る:

> closestDate('2011-08-15', nonNAdays)
[1] "2011-08-15"

日付自体以外の最も近い日付を関数に与えたいのですが。したがって、この場合は「2011-08-18」です。これを取得するためにコードを変更するにはどうすればよいですか?ありがとう。

4

1 に答える 1

3

dist計算と選択操作から等しい日付削除するだけです。

  closestDate <- function(searchDate, dateList, roundDown=FALSE) {
           as.Date(sapply(as.Date(searchDate), function(x){
             dist <- abs(x - as.Date(dateList[dateList != searchDate]))
             closest <- dateList[dateList != searchDate][which(min(dist) == dist)]
             return(ifelse(roundDown, min(closest), max(closest)))
           }), origin="1970-1-1")
         }
 nonNAdays <- c("2011-08-15", "2011-08-18", "2011-08-19")
  closestDate('2011-08-15', nonNAdays)
#[1] "2011-08-18"
于 2013-03-05T23:00:30.707 に答える