【发布时间】:2017-12-15 22:41:20
【问题描述】:
我有一个包含三列的数据集,ID、代码、日期。
Id Code Date
70329 CD_1020 2004-08-25
70329 DSW_46 2005-01-18
70329 AS_712 2009-09-11
1194167 CK_45 2005-10-13
1194167 CD_412 2012-04-12
1194167 DSW_99 2004-08-16
1194167 CD_456 2010-04-18
对于每个Id,Code 列将包含许多不同的代码值,但它始终包含值 DSW_46 或 DSW_99。无论每个 id 存在哪些其他代码值,这两个值(DSW_46 或 DSW_99)都会出现。
目标是根据此标准创建第四列。
第 1 步:在每个 Id 之前,捕获该行包含 DSW_46 或 DSW_99 的日期。
第二步:
a) 如果存在早于该 Id 的 DSW_46 或 DSW_99 行的行,则存储包含值 DSW_46 或 DSW_99 的日期。例如:在 Id 70329 的情况下,存在值为 DSW_46 的行,对应的日期是 2005-01-18,但是该 id 在 2005-01-18 之前有一行。所以新的日期列应该存储日期 2005-01-18
b) 如果没有比具有 DSW_46 或 DSW_99 值的行更早的行,则存储该 ID 的下一次观察的日期。例如:对于 ID 1194167,包含 DSW_99 的行的日期值为 2004-08-16,这是最早的。此 id (1194167) 在此之前没有任何内容。因此,新的日期列应存储日期 2005.10.13,即 2004-08-16 之后的下一个日期。
最终预期的数据集如下所示
Id Code Date NewDate
70329 CD_1020 2004-08-25 2005-01-18
70329 DSW_46 2005-01-18 2005-01-18
70329 AS_712 2009-09-11 2005-01-18
1194167 CK_45 2005-10-13 2005-10-13
1194167 CD_412 2012-04-12 2005-10-13
1194167 DSW_99 2004-08-16 2005-10-13
1194167 CD_456 2010-04-18 2005-10-13
希望这是有道理的。非常感谢任何有关如何完成此操作的帮助。
【问题讨论】:
标签: r date datatable dplyr subset