假设我有一个如下的数据框:
我希望您能提供以下期望的输出结果:
对于序列中的每个月份,我希望获得一个单独的行,该行将由以下内容分隔:1)如果序列的开始日期大于该月份的开始日期或该月份的开始日期,以及2)如果该月份的结束日期大于序列的结束日期或序列的结束日期,则为该月份的结束日期。你有什么想法如何做到这一点吗?
df <- data.frame(group = c("a", "a", "b"),
start = as.Date(c("2018-01-01", "2018-09-01", "2018-02-01")),
end = as.Date(c("2018-02-15", "2018-12-31", "2018-03-30")))
group start end
a 2018-01-01 2018-02-15
a 2018-09-01 2018-12-31
b 2018-02-01 2018-03-30
我希望您能提供以下期望的输出结果:
output <- data.frame(group = c("a", "a", "a", "a", "a", "a", "b", "b"),
start = as.Date(c("2018-01-01", "2018-02-01", "2018-09-01",
"2018-10-01", "2018-11-01", "2018-12-01",
"2018-02-01", "2018-03-01")),
end = as.Date(c("2018-01-31", "2018-02-15", "2018-09-30",
"2018-10-31", "2018-11-30", "2018-12-31",
"2018-02-28", "2018-03-30")))
group start end
a 2018-01-01 2018-01-31
a 2018-02-01 2018-02-15
a 2018-09-01 2018-09-30
a 2018-10-01 2018-10-31
a 2018-11-01 2018-11-30
a 2018-12-01 2018-12-31
b 2018-02-01 2018-02-28
b 2018-03-01 2018-03-30
对于序列中的每个月份,我希望获得一个单独的行,该行将由以下内容分隔:1)如果序列的开始日期大于该月份的开始日期或该月份的开始日期,以及2)如果该月份的结束日期大于序列的结束日期或序列的结束日期,则为该月份的结束日期。你有什么想法如何做到这一点吗?