【发布时间】:2021-02-22 18:51:26
【问题描述】:
假设我有一个如下所示的 data.frame:
user_df = read.table(text = "person_id job_number job_type start_date end_date
1 1 B 2012-11-01 2014-01-01
1 2 A 2016-02-01 2016-10-01
1 3 A 2016-12-01 2020-01-01
1 4 B 2020-01-01 2021-01-01
2 1 A 2011-03-01 2012-08-01
2 2 B 2013-01-01 2020-01-01
2 3 A 2020-01-01 2021-01-01
2 4 B 2021-01-01 2021-01-17
3 1 A 2005-03-01 2011-03-01
3 2 B 2012-01-01 2014-01-01", header = T)
每个person_id 都有给定工作的开始日期和结束日期。我想在作业之间的空白区域之间插入行,并为这些列创建一个名为 unemployed 的附加列。
前几行的结果 data.frame 如下所示:
user_df = read.table(text = "person_id job_number job_type start_date end_date unemployed
1 1 B 2012-11-01 2014-01-01 0
1 1 B 2014-01-01 2016-02-01 1
1 2 A 2016-02-01 2016-10-01 0
1 2 A 2016-10-01 2016-12-01 1
1 3 A 2016-12-01 2020-01-01 0
1 4 B 2020-01-01 2021-01-01 0
2 1 A 2011-03-01 2012-08-01 0
2 1 A 2012-08-01 2013-01-01 1
2 2 B 2013-01-01 2020-01-01 0", header = T)
所以我实际上插入了一个新行,其中前一行的结束日期作为其开始日期,下一行的开始日期作为其结束日期。
不知道从哪里开始。我可以通过简单地将跨越最早开始日期和最后结束日期的天数相加并从每行实际累积的总时间中减去它来计算失业总时间。但我不确定如何以编程方式在 dplyr 链中插入行来填补失业时间。
【问题讨论】: