在 R 中,如何确定列中的哪个日期最接近预先指定的日期?

In R, how can I identify which date in a column is closest to a pre-specified date?

我有一个数据集,我正在尝试找到“2021-08-02”的截止日期,而不用先于它。因此,在我下面的示例数据集中,我希望它过滤掉“2021-08-05”之前的所有内容,因为这是最近的日期,而不是更早。

library(dplyr)
test <- tibble(Day = seq(as.Date("2021-08-01"), as.Date("2021-09-10"), by="4 days"),
                Score = c(sample(1:15, 11)))

求它们的绝对差,求最小索引,return序列

library(dplyr)
date <- as.Date('2021-08-02')
test %>% 
   slice(seq_len(which.min(abs(date - Day))))

-输出

# A tibble: 1 × 2
  Day        Score
  <date>     <int>
1 2021-08-01    11

如果我们想要 return 另一组行,请在 slice 步骤之后使用 %>% anti_join(df, .) 或使用 row_number()

创建条件
test %>% 
   filter(row_number() > seq_len(which.min(abs(date - Day))))
# A tibble: 10 × 2
   Day        Score
   <date>     <int>
 1 2021-08-05     9
 2 2021-08-09    12
 3 2021-08-13    13
 4 2021-08-17     6
 5 2021-08-21     4
 6 2021-08-25     1
 7 2021-08-29    10
 8 2021-09-02     3
 9 2021-09-06     7
10 2021-09-10     8