【发布时间】:2017-03-31 12:56:51
【问题描述】:
我有一个如下所示的数据框:
w<-read.table(header=TRUE,text="
start.date end.date
2006-06-26 2006-07-24
2006-07-19 2006-08-16
2007-06-09 2007-07-07
2007-06-24 2007-07-22
2007-07-03 2007-07-31
2007-08-04 2007-09-01
2007-08-07 2007-09-04
2007-09-05 2007-10-03
2007-09-14 2007-10-12
2007-10-19 2007-11-16
2007-11-17 2007-12-15
2008-06-18 2008-07-16
2008-06-28 2008-07-26
2008-07-11 2008-08-08
2008-07-23 2008-08-20")
我正在尝试获得一种将重叠的开始日期和结束日期组合到一个日期范围内的输出。所以对于示例集,我想得到:
w<-read.table(header=TRUE,text="
start.date end.date
2006-06-26 2006-08-16
2007-06-09 2007-07-31
2007-08-04 2007-09-04
2007-09-05 2007-10-12
2007-10-19 2007-11-16
2007-11-17 2007-12-15
2008-06-18 2008-08-20")
这个问题类似于Date roll-up in R,但我不需要对我的分组进行任何类型的分组,所以那里的答案令人困惑。
此外,针对以下我的问题建议的代码不适用于我的数据框的某些部分,例如:
x<-read.table(header=TRUE,text="start.date end.date
2006-01-19 2006-01-20
2006-01-25 2006-01-29
2006-02-24 2006-02-25
2006-03-15 2006-03-22
2006-04-29 2006-04-30
2006-05-24 2006-05-25
2006-06-26 2006-08-16
2006-07-05 2006-07-10
2006-07-12 2006-07-21
2006-08-13 2006-08-15
2006-08-18 2006-08-19
2006-08-28 2006-09-02")
我很困惑为什么没有?
【问题讨论】:
-
stackoverflow.com/a/37487673/3573401
library(dplyr); w %>% mutate(gr = cumsum(start.date-lag(end.date, default=1)>=0 )) %>% group_by(gr) %>% summarise(start.date = min(start.date), end.date = max(end.date)) -
Date roll-up in R的可能重复
-
这不是@RonakShah 那个问题的重复 - 这个问题是关于日期的延续,我的问题是关于重叠的日期。
标签: r datetime date-range