R - 通过比较开始和结束日期获得价值

时间:2015-06-23 10:14:03

标签: r return compare

我有两个名为'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。 假日值的格式为字符。

1 个答案:

答案 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)