将不平衡数据扩展到月度面板

时间:2012-04-08 23:43:03

标签: r

我有一个类似于以下内容的数据集,我想扩展到月度面板数据集。

ID | start_date | end_date | event_type |
 1 |   01/01/97 | 08/01/98 |          1 |
 2 |   02/01/97 | 10/01/97 |          1 |
 3 |   01/01/96 | 12/01/04 |          2 |

有些案例的持续时间比其他案例要长。我已经想出如何通过从每个日期抽出年份然后使用以下内容将数据扩展到年度配置:

year <- ddply(df, c("ID"), summarize, year = seq(startyear, endyear))

接下来是:

month <- ddply(year, c("ID"), summarize, month = seq(1, 12))

这种方法的问题在于它没有为月份分配正确的数字,即1月= 1,因此它与我最终要将其合并的事件数据集不能很好地兼容,我将在yearIDmonth上进行匹配。帮助将不胜感激。这是我试图扩展的数据集的直接链接(.xls):http://db.tt/KeLRCzr9。希望我已经提供了足够的信息,但如果还有其他信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

你可以尝试更像这样的东西:

ddply(df,.(ID),transform,dt = seq.Date(as.Date(start_date,"%m/%d/%Y"),as.Date(end_date,"%m/%d/%Y"),by = "month"))

可能会有很多警告与行名称有关,我不能保证这会起作用,因为您链接的数据集与您提供的示例不匹配。对于初学者,我假设您清理了开始日期和结束日期,因为它们在.xls文件中以各种格式显示。

答案 1 :(得分:0)

ddply(df, .(ID), summarize, dt = seq.Date(start_date, end_date, by = "month"))

假设start_date和end_date已经是日期对象。 Joran让我接近了,所以再次感谢你的帮助。