我有两个名为'holiday'和'script'的数据框:
假期:
BeginDate EndDate Holiday
2012-01-01 2012-01-05 Candyday
2014-02-13 2014-02-16 Toplessday
脚本:
Date
2012-01-04
2014-02-17
我希望通过比较日期在“脚本”数据框中添加另一列,其中包含假日。
您可以假设所有日期值都被格式化为日期; %Y%米%d。 假日值的格式为字符。
答案 0 :(得分:-1)
这应该这样做。它还使用粘贴来处理重叠假期。
library(dplyr)
library(lubridate)
holi <- read.table(text=" BeginDate EndDate Holiday
2012-01-01 2012-01-05 Candyday
2014-02-13 2014-02-17 Toplessday
2012-01-01 2014-03-17 Everyday", header = T, stringsAsFactors = F)
script <- read.table(text="Date
2012-01-04
2014-02-15", header=T)
holi <- transmute(holi, Interval=interval(ymd(BeginDate), ymd(EndDate)), Holiday)
script <- transmute(script, Date=ymd(Date))
holiday_vec <- sapply(script$Date, function(x){
paste(holi$Holiday[x %within% holi$Interval],
collapse = ", ")})
script <- mutate(script, Holidays = holiday_vec)