>我有一个带有日期序列的数据帧,我想向数据帧添加一列,以便如果向量日期的每个日期都属于该日期序列,则指示 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