如何向数据框添加一个布尔列,指示每个假期日期是否属于日期列

How to add a boolean column to the dataframe that indicates whether each holiday date belongs to the dates column

我有一个包含一系列日期的数据框,我想向该数据框添加一列,以便它在向量日期的每个日期都属于该日期序列时指示 TRUE,否则指示 FALSE。

这是我的方法:

date <- data_frame(ds = seq(as.Date('2019-01-01'), as.Date('2019-12-31'), by = 'day'))

is_holiday <- function(ds) {
  dates <- as.Date(ds)
  as.Date(c('2017-01-01', '2019-07-20')) %in% dates
}

其中矢量 c 是我要在列数据框中检查的矢量。

我想看

ds          is_holiday
2017-01-01    TRUE
2017-01-02    FALSE
...
2019-07-19    FALSE
2019-07-20    TRUE
2019-07-21    FALSE
...

提前致谢。

这个怎么样:

holidays <- as.Date(c('2017-01-01', '2019-07-20', '2020-01-01'))
date$is_holiday <- FALSE
date$is_holiday[which(date$ds %in% holidays)] <- TRUE

或作为单线:

date$is_holiday <- ifelse(date$ds %in% holidays, TRUE, FALSE)

根据下面@Ronak 的评论,这里有一个更简单的单行代码:

date$is_holiday <- date$ds %in% holidays