【发布时间】:2020-10-09 15:20:18
【问题描述】:
我有一个包含多行人员的表格,以及每个纳税年度结束的日期:
df1 <- tibble::tribble(~ID, ~TAX_YEAR_END_DATE,
"01", "2009-04-06",
"01", "2010-04-06",
"01", "2011-04-06",
"02", "2010-04-06",
"02", "2011-04-06",
"02", "2012-04-06")
还有一个表格,每人多行,给出工作期间的开始日期和结束日期:
df2 <- tibble::tribble(~ID, ~START_DATE, ~END_DATE,
"01", "2007-09-11", "2010-04-06",
"02", "2008-06-06", "2010-04-06",
"02", "2011-09-09", "2014-04-06")
END_DATE 总是在 4 月 6 日,每个人总是有 START_DATE 和 END_DATE - 没有 NULLs。
我想在第一个表中添加一个新的 STATUS 列,说明每个人是否每年都被雇用。这就是上面示例的样子:
ID TAX_YEAR_END_DATE STATUS
01 2009-04-06 EMPLOYED
01 2010-04-06 EMPLOYED
01 2011-04-06 NOT
02 2010-04-06 EMPLOYED
02 2011-04-06 NOT
02 2012-04-06 EMPLOYED
我发现我可以通过ID 加入表格,然后在使用mutate() 创建新列时应用一些规则 - 如果TY_END_DATE 介于START_DATE 和END_DATE 之间,那么STATUS 已使用,如果未使用,则 STATUS 未使用。
我遇到困难的地方是第二张表中有多个工作期的借款人。在这些情况下,当我执行连接时,第一个表中的行会重复(或更多),而我无法找到另一种方法。
我正在使用 R,更喜欢 data.table,因为它通常更快,但 dplyr 也可能没问题。
【问题讨论】:
标签: r dplyr data.table data-manipulation