R:在ID上循环,从以前的记录中获取变量

时间:2018-08-09 20:19:03

标签: r loops date

我花了数小时试图编写循环遍历唯一ID并从具有相同ID(在本例中为许可证编号)的前一行中提取值的代码。我已经尝试过for loopslapply的多次迭代,但是没有运气。

数据如下:

   est_licnum to_licnum    Link_dt  UnLink_dt
1   120701436 100600478 2012-05-07 2014-10-15
2   120701436 100600301 2012-05-07 2016-04-19
3   120701436 130605459 2012-05-07 2016-05-12
4   120701436 100600654 2012-05-07 2016-05-13
5   120701436 130605459 2012-05-07 2017-06-01
6   120701436 100600273 2012-05-07       <NA>
7   120708499 100600199 2012-08-28 2014-06-20
8   120708499 110600019 2012-08-28 2014-12-09
9   120708499 100600345 2012-08-28 2015-08-10
10  120708499 100600498 2012-08-28 2016-08-09
11  120708499 100600254 2012-08-28 2018-01-05
12  120708499 100600273 2012-08-28       <NA>
13  140700171 100600301 2014-01-29 2014-07-29
14  140700171 130605459 2014-01-29 2016-05-12
15  140700171 100600654 2014-01-29 2016-05-13
16  140700171 130605459 2014-01-29 2017-06-01
17  140700171 100600254 2014-01-29 2017-06-01
18  140700171 100600273 2014-01-29       <NA>

基于est_licnum,我希望为从to_licnumLink_dt抽取的每个Unlink_dt创建开始和结束日期。

首先,更简单的部分:如果UnLink_dtNA,则开始日期将是最新的UnLink_dt,结束日期将被硬编码为2018-07-06。对于每个est_licnum,最早的UnLink_dt的开始日期将等于Link_dt,结束日期将是UnLink_dt。如果有点令人费解,那一切都非常简单。

下一步对我来说更加困难。下一个最早的UnLink_dt的开始日期将等于前一个UnLink_dt,依此类推...所有使结束日期等于Unlink_dt

因此,理想情况下,最终结果是...

est_licnum to_licnum    Link_dt  UnLink_dt   start_dt     end_dt
1  120701436 100600478 2012-05-07 2014-10-15 2012-05-07 2014-10-15
2  120701436 100600301 2012-05-07 2016-04-19 2014-10-15 2016-04-19
3  120701436 130605459 2012-05-07 2016-05-12 2016-04-19 2016-05-12
4  120701436 100600654 2012-05-07 2016-05-13 2016-05-12 2016-05-13
5  120701436 130605459 2012-05-07 2017-06-01 2016-05-13 2017-06-01
6  120701436 100600273 2012-05-07       <NA> 2017-06-01 2018-07-06

如您所见,我可以在一个示例中对其进行管理,但是遍历文件是挂断我的地方。任何帮助将不胜感激。 (此外,这全部取决于对文件进行正确排序。再次感谢。)

0 个答案:

没有答案