在 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
我有一个数据集,我正在尝试找到“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