【发布时间】:2014-03-02 13:35:26
【问题描述】:
我有一个基于国家/地区的事件组的数据集。它看起来像这样:
Data <- data.frame(EpStart=c("2010-01-01 00:00:00", "2009-01-01 00:00:00",
"2009-01-01 00:00:00", "2006-01-01 00:00:00"),
EpEnd=c("2011-01-01 00:03:00", "2013-01-01 00:00:00",
"2012-01-01 00:00:00", "2011-01-01 00:00:00"),
countryID=c("US","US", "CAN","CAN"))
我想制作一个数据框,将数据拆分为按国家 ID 分组的年度日历间隔。我需要将其转换为如下所示的数据框:
CountryID Year Ongoing
1 US 2009 1
2 US 2010 2
3 US 2011 1
4 US 2012 1
5 CAN 2006 1
6 CAN 2007 1
7 CAN 2008 1
8 CAN 2009 2
9 CAN 2010 2
10 CAN 2011 1
我已尝试处理 @ 提供的 here, 示例,但我没有找到任何解决方案来解决拆分数据时如何保留 CountryID。
tmp <- do.call(c, apply(Data, 1,
function(x) head(seq(from = as.POSIXct(x[1]),
to = as.POSIXct(x[2]),by = "years"),
-1)))
tmp <- sapply(split(tmp, format(tmp, format = "%Y")), length)
Ongoing <- data.frame(Date=names(tmp), Ongoing = tmp, row.names=NULL)
这会返回,但不会按 CountryID 拆分数据:
> Ongoing
Date Ongoing
1 2006 1
2 2007 1
3 2008 1
4 2009 3
5 2010 4
6 2011 2
7 2012 1
【问题讨论】:
标签: r date datetime split calendar