Я хочу найти разницу между двумя отметками времени на основе поиска отметки времени в одном столбце на основе условия «Начало», а затем нахождения отметки времени для первой строки, которая соответствует другому условию в том же столбце «Стоп» . В основном мы использовали программу для «запуска» поведения и «остановки» поведения, чтобы мы могли рассчитать продолжительность поведения.
Я попытался адаптировать код из этого сообщения: вычесть значение из предыдущей строки на группа
но я не могу понять, как заставить работать над выполнением условия в следующих строках для того же столбца. Это осложняется тем фактом, что могут быть «событийные» поведения, у которых есть «начало», но нет «остановки». Пример фрейма данных.
Data
Behavior Modifier_1 Time_relative_s
BodyLength Start 122.11
Growl Start 129.70
Body Length Stop 132.26
Body Length Start 157.79
Body Length Stop 258.85
Body Length Start 270.12
Bark Start 272.26
Growl Start 275.68
Body Length Stop 295.37
и я хочу это:
Behavior Modifier_1 Time_relative_s diff
BodyLength Start 122.11 10.15
Growl Start 129.70
Body Length Stop 132.26
Body Length Start 157.79 101.06
Body Length Stop 258.85
Body Length Start 270.12 25.25
Bark Start 272.26
Growl Start 275.68
Body Length Stop 295.37
Я пробовал использовать трубы dplyr:
test<-u%>%
filter(Modifier_1 %in% c("Start","Stop")) %>%
arrange(Time_Relative_s) %>%
mutate(diff = lead(Time_Relative_s, default = first(Time_Relative_s=="Stop")-Time-Relative_s)
Но я не должен правильно использовать свинец, потому что он просто возвращает мне Time_Relative_s в столбце diff. Какие-либо предложения? Спасибо за помощь!