【问题标题】:R - Get value by comparing the begin and end dateR - 通过比较开始日期和结束日期来获取价值
【发布时间】:2015-06-23 10:14:02
【问题描述】:

我有两个名为“假期”和“脚本”的数据框:

节假日:

 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%m%d。 假日值被格式化为字符。

【问题讨论】:

标签: r return compare


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 2017-02-08
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多