РЕДАКТИРОВАНИЕ: чтобы уточнить, что может быть несколько A04
на id
Мне нужно получить все регистрации за предыдущие 6 месяцев, которые указаны c для каждого случая в отдельности.
Я хотел бы установить искусственную временную шкалу. Таким образом, все дела id
имеют свою временную шкалу. Начальной точкой является первая строка с x=A=04
, затем подсчитываются дни назад / вперед и выбираются дни. ПРИМЕЧАНИЕ: это огромный набор данных, и может быть несколько x=A04
на id
.
Мой набор данных выглядит примерно так:
id x date
1: 12 D95 2015-06-19
2: 12 A04 2015-08-15
3: 12 A01 2015-03-16
4: 12 A04 2015-12-20
5: 10 K20 2017-02-20
6: 10 B10 2017-09-01
7: 10 A04 2017-12-11
8: 10 A84 2017-10-11
Данные: (Отредактировано согласно предложению jay.sf)
df <- structure(list(id = c(12L, 12L, 12L, 12L, 10L, 10L, 10L, 10L),
x = c("D95", "A04", "A01", "A04", "K20", "B10", "A04", "A84"
), date = structure(c(16605, 16510, 16455, 17217, 17410,
17511, 17450, NA), class = "Date")), row.names = c(NA, -8L
), class = "data.frame")
У меня есть отдельный набор данных df_s
с однорядными id
и самым ранним date
из x=A04
. Думаю, это поможет, но теперь я застрял ...
Пример отдельного набора данных df_s
:
id date
1: 12 2015-08-15
2: 10 2017-12-11
Данные (Добавлено по предложению Джея .sf)
df_s <- structure(list(id = c(12L, 10L), date = structure(c(16789, 17511
), class = "Date")), row.names = c(NA, -2L), class = "data.frame")
Это был бы мой новый набор данных (количество дней не точно рассчитано):
id x date days.since.first.A04
1: 12 D95 2015-06-19 -98
2: 12 A04 2015-08-15 0
3: 12 A01 2015-03-16 -170
4: 12 A04 2015-12-20 127
5: 10 K20 2018-02-20 70
6: 10 B10 2017-09-01 -101
7: 10 A04 2017-12-11 0
8: 10 A84 2017-10-11 -60