Я пытаюсь сгруппировать свои данные по subject_lab и изменениям в subject_value, сохраняя при этом даты изменений для каждого subject_value для subject_lab для subject_ID.
Я изучил примеры dplyr и data.table, разбросанные по стеку, но я не нашел ничего подходящего для моей проблемы.
subject_id <- rep(1, each=10)
subject_date <- as.Date("2019-01-01"):(as.Date("2019-01-01")+29)
subject_date <- as.Date(subject_date, origin="1970-01-01")
subject_lab <- rep(1:3, each=10)
set.seed(123)
subject_value <- sample(0:4, size=30, replace=T)
subject_sample_df <- data.frame(subject_id, subject_date, subject_lab,
subject_value)
subject_id subject_date subject_lab subject_value
1 1 2019-01-01 1 1
2 1 2019-01-02 1 3
3 1 2019-01-03 1 2
4 1 2019-01-04 1 4
5 1 2019-01-05 1 4
6 1 2019-01-06 1 0
7 1 2019-01-07 1 2
8 1 2019-01-08 1 4
9 1 2019-01-09 1 2
10 1 2019-01-10 1 2
11 1 2019-01-11 2 4
12 1 2019-01-12 2 2
13 1 2019-01-13 2 3
14 1 2019-01-14 2 2
15 1 2019-01-15 2 0
16 1 2019-01-16 2 4
17 1 2019-01-17 2 1
18 1 2019-01-18 2 0
19 1 2019-01-19 2 1
20 1 2019-01-20 2 4
21 1 2019-01-21 3 4
22 1 2019-01-22 3 3
23 1 2019-01-23 3 3
24 1 2019-01-24 3 4
25 1 2019-01-25 3 3
26 1 2019-01-26 3 3
27 1 2019-01-27 3 2
28 1 2019-01-28 3 2
29 1 2019-01-29 3 1
30 1 2019-01-30 3 0
Ожидаемые результаты будут иметь следующий результат.Теперь в строках 4, 8, 20, 22 и 23 объединены временные рамки.
id start_date stop_date lab value
1 1 2019-01-01 2019-01-01 1 1
2 1 2019-01-02 2019-01-02 1 3
3 1 2019-01-03 2019-01-03 1 2
4 1 2019-01-04 2019-01-05 1 4
5 1 2019-01-06 2019-01-06 1 0
6 1 2019-01-07 2019-01-07 1 2
7 1 2019-01-08 2019-01-08 1 4
8 1 2019-01-09 2019-01-10 1 2
9 1 2019-01-11 2019-01-11 2 4
10 1 2019-01-12 2019-01-12 2 2
11 1 2019-01-13 2019-01-13 2 3
12 1 2019-01-14 2019-01-14 2 2
13 1 2019-01-15 2019-01-15 2 0
14 1 2019-01-16 2019-01-16 2 4
15 1 2019-01-17 2019-01-17 2 1
16 1 2019-01-18 2019-01-18 2 0
17 1 2019-01-19 2019-01-19 2 1
18 1 2019-01-20 2019-01-20 2 4
19 1 2019-01-21 2019-01-21 3 4
20 1 2019-01-22 2019-01-23 3 3
21 1 2019-01-24 2109-01-24 3 4
22 1 2019-01-25 2019-01-26 3 3
23 1 2019-01-27 2019-01-28 3 2
24 1 2019-01-29 2019-01-29 3 1
25 1 2019-01-30 2019-01-30 3 0