1

我有一个如下所示的数据集,我想将其扩展到每月面板数据集。

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,因此它不能很好地与我想最终将其合并的事件数据集一起使用,我会在year,ID和上匹配month。帮助将不胜感激。这是我要扩展的数据集(.xls)的直接链接:http: //db.tt/KeLRCzr9。希望我已经包含了足够的信息,但如果需要任何其他信息,请告诉我。

4

2 回答 2

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 文件中。

于 2012-04-09T00:10:41.570 回答
0
ddply(df, .(ID), summarize, dt = seq.Date(start_date, end_date, by = "month"))

假设 start_date 和 end_date 已经是日期对象。不过,乔兰让我很亲近,所以再次感谢您的帮助。

于 2012-04-09T13:59:26.413 回答