У меня есть таблица с несколькими строками человека и датой окончания каждого налогового года:
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
всегда 6 апреля, и у всех всегда есть START_DATE
и END_DATE
- нет NULL
s.
Я хочу добавить новый столбец 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 тоже может подойти.