【发布时间】:2021-11-17 10:38:50
【问题描述】:
我有一个数据库,对于同一个事件,我想将多个不同的子事件聚合成一个事件。
我只想在下一条记录的开始日期是第一条记录的结束日期之后的第二天进行聚合。因此,如果开始日期是 2015 年 5 月 22 日,记录 1 的结束日期是 2015 年 5 月 31 日,记录 2 的开始日期是 2015 年 1 月 6 日和 2015 年 6 月 15 日,则将行聚合到1 行,因此记录 1 将 22/05/2015 显示为开始日期,结束日期为 15/06/2015。
例如它看起来像;
NameDOBStart DateEnd Date
John Doe 1/01/2000 22/05/2015 31/05/2015
John Doe 1/01/2000 1/06/2015 15/06/2015
John Doe 1/01/2000 16/06/2015 20/06/2015
John Doe 1/01/2000 7/07/2015 8/07/2015
Jane Doe 1/01/1985 20/06/2018 21/06/2018
Jane Doe 1/01/1985 22/06/2018 30/06/2018
Jane Doe 1/01/1985 1/07/2018 2/07/2018
Jane Doe 1/01/1985 30/07/2018 31/07/2018
我会将其汇总为以下内容;
NameDOBStart DateEnd Date
John Doe 1/01/2000 22/05/2015 20/06/2015
John Doe 1/01/2000 7/07/2015 8/07/2015
Jane Doe 1/01/1985 20/06/2018 2/07/2018
Jane Doe 1/01/1985 30/07/2018 31/07/2018
我用过下面的代码,但效果不是很好。
ddply(df,~name+dob,summarise, actualstart=min(start.date), actualend=max(end.date))
问题在于它还聚合了不直接跟随的记录。
请帮忙,谢谢。
【问题讨论】:
标签: r aggregation plyr