【发布时间】:2019-01-27 10:27:14
【问题描述】:
我有一个包含两个日期列 start_holiday 和 end_holiday 的日期框架(四个变量)。我正在尝试检查特定日期是否在假期日期范围内,然后是否将该特定日期的结果导出为一个excel表。
我的意见:
df <- tibble::tribble(
~Code, ~Member_Id, ~Start.Holiday, ~End.Holiday,
18100532L, 2L, 20190118L, 20190203L,
18101425L, 1L, 20190118L, 20190203L,
18101425L, 2L, 20181218L, 20190102L,
18102843L, 1L, 20181222L, 20190101L,
18103202L, 1L, 20190202L, 20190303L,
18103202L, 2L, 20190202L, 20190303L,
18104148L, 1L, 20181215L, 20181229L,
18104148L, 2L, 20181215L, 20181229L,
18105261L, 1L, 20181204L, 20181230L,
18105261L, 2L, 20190109L, 20190114L,
18105261L, 3L, 20181205L, 20181222L,
18107386L, 1L, 20181205L, 20181222L,
18107429L, 2L, 20181205L, 20181222L,
18108931L, 1L, 20181217L, 20190110L,
18109405L, 1L, 20190123L, 20190208L,
18109405L, 2L, 20190123L, 20190208L,
18113785L, 1L, 20190118L, 20190122L,
18114041L, 1L, 20190118L, 20190122L,
18114329L, 1L, 20181213L, 20181222L,
18114329L, 2L, 20181213L, 20181222L)
到目前为止,我已经做到了,这将为 1 月 1 日度假的人提供服务。但是,我正在寻找一种代码更少、更智能的方法。假设我想检查 1 月 1 日到 1 月 11 日,使用这种方法我必须重新运行脚本 11 次并为每个日期单独导出。有没有一种方法可以用来检查某个日期是否在这两个时间间隔内,并且对于每个日期,将输出导出为一个 Excel 表?例如,对于 1 月 1 日(仅查看我的示例数据),3 人在度假并将其导出为一张 excel 表调用 0101 ,对于 1 月 2 日,2 人在度假并将结果导出为一张表调用 0201 ,依此类推。我希望我足够清楚
仅适用于 1 月 1 日
library(lubridate)
library(tidyverse)
df_interval <- df %>%
janitor::clean_names() %>%
mutate(
Start_H = ymd(start_holiday),
End_H = ymd(end_holiday),
# Create an interval object.
holiday_Interval = interval(start = Start_H, end = End_H),
flag = case_when(
ymd("2019-01-01") %within% holiday_Interval ~ 1,
TRUE ~ 0)) %>%
select(-holiday_Interval)
【问题讨论】:
标签: r dplyr tidyverse purrr lubridate