【发布时间】:2020-10-13 04:14:48
【问题描述】:
我有一个包含 id、位置、开始年份、结束年份、age1 和 age2 的数据集。对于定义为 id、location、age1 和 age2 的每个组,我想创建新的开始和结束年份。例如,我可能有 3 个 china 条目,涵盖 0 - 4 岁。一个是 2000 - 2000,另一个是 2001 - 2001,最后一个是 2005-2005。由于前两个条目中的年份递增 1,因此我希望它们对应的 newstart 和 newend 为 2000-2001。第三个条目将具有 newstart==2005 和 newend==2005,因为这不是连续年份的一部分。
我拥有的数据表类似于以下,除了它有数千个条目许多组合:
id location start end age1 age2
1 brazil 2000 2000 0 4
1 brazil 2001 2001 0 4
1 brazil 2002 2002 0 4
2 argentina 1990 1991 1 1
2 argentina 1991 1991 2 2
2 argentina 1992 1992 2 2
2 argentina 1993 1993 2 2
3 belize 2001 2001 0.5 1
3 belize 2005 2005 1 2
我想更改数据表,使其如下所示
id location start end age1 age2 newstart newend
1 brazil 2000 2000 0 4 2000 2002
1 brazil 2001 2001 0 4 2000 2002
1 brazil 2002 2002 0 4 2000 2002
2 argentina 1990 1991 1 1 1991 1991
2 argentina 1991 1991 2 2 1991 1993
2 argentina 1992 1992 2 2 1991 1993
2 argentina 1993 1993 2 2 1991 1993
3 belize 2001 2001 0.5 1 2001 2001
3 belize 2005 2005 1 2 2005 2005
我尝试使用滞后创建一个变量来跟踪前一年和本年度的差异,然后计算这两年之间的差异。然后我通过放置最小开始和最大结束来创建 newstart 和 newend。我发现这只有在连续年份有一组 2 时才有效。如果我有一个更大的集合,这将不起作用,因为它无法跟踪每个分组的年份增加 1 的 obs 数量。我相信我需要某种类型的循环。
有没有更有效的方法来做到这一点?
【问题讨论】:
标签: r data.table