Мне было интересно, как синтезировать начальное и конечное время, например, из приведенного ниже кадра данных. Данные показывают запись обработчика вызова за период времени, когда выполняются вызовы
Id CallTime CallHandler CallStatus
1 01/01/2020 00:05 A Busy
2 01/01/2020 00:10 A Free
3 01/01/2020 00:25 A Free
4 01/01/2020 00:57 A Free
5 01/01/2020 01:30 A Busy
6 01/01/2020 01:45 A Busy
7 01/01/2020 02:20 A Busy
8 01/01/2020 02:25 A Busy
9 01/01/2020 02:50 A Free
10 01/01/2020 02:25 A Free
11 01/01/2020 02:55 A Busy
12 01/01/2020 03:25 A Busy
13 01/01/2020 04:55 A Free
14 01/01/2020 05:25 A Busy
15 01/01/2020 05:55 A Free
16 01/01/2020 06:25 A Busy
Ожидаемый вывод
Выходные данные должны возвращать время начала и окончания в разных столбцах в зависимости от состояния занятости и свободного вызова Свободен и занят
CallHandler StartTime EndTime
A 01/01/2020 00:05 01/01/2020 00:10
A 01/01/2020 01:30 01/01/2020 02:50
A 01/01/2020 02:55 01/01/2020 04:55
A 01/01/2020 05:25 01/01/2020 05:55
A 01/01/2020 06:25 N/A
Я использовал
df %>%
group_by(CallStatus) %>%
mutate(StartTime = ifelse(CallStatus == "Free", CallTime, 0), EndTime = ifelse(CallStatus == "Busy", CallTime, 0))
Чтобы получить следующее, но Нит действительно то, что я хотел
Id CallTime CallHandler CallStatus StartTime EndTime
1 01/01/2020 00:05 A Busy 0 01/01/2020 00:05
2 01/01/2020 00:10 A Free 01/01/2020 00:10 0
3 01/01/2020 00:25 A Free 01/01/2020 00:25 0
4 01/01/2020 00:57 A Free 01/01/2020 00:57 0
5 01/01/2020 01:30 A Busy 0 01/01/2020 01:30
6 01/01/2020 01:45 A Busy 0 01/01/2020 01:45
7 01/01/2020 02:20 A Busy 0 01/01/2020 02:20
8 01/01/2020 02:25 A Busy 0 01/01/2020 02:25
9 01/01/2020 02:50 A Free 01/01/2020 02:50 0
10 01/01/2020 02:25 A Free 01/01/2020 02:25 0
11 01/01/2020 02:55 A Busy 0 01/01/2020 02:55
12 01/01/2020 03:25 A Busy 0 01/01/2020 03:25
13 01/01/2020 04:55 A Free 01/01/2020 04:55 0
14 01/01/2020 05:25 A Busy 0 01/01/2020 05:25
15 01/01/2020 05:55 A Free 01/01/2020 05:55 0
16 01/01/2020 06:25 A Busy 0 01/01/2020 06:25