У меня есть фрейм данных
structure(list(Time = structure(c(1531056854, 1531057121, 1517382101,
1517386850, 1517386951, 1517399987, 1517400523, 1517400523), class = c("POSIXct",
"POSIXt")), Data = c("Start", "Exit", "Start", "Start", "Exit",
"Start", "Exit", "Exit"), same = c(0, 0, 1, 0, 0, 0, 1, NA)), class = "data.frame", .Names = c("Time",
"Data", "same"), row.names = c(NA, -8L))
Идеальный сценарий для столбца 2 - это Start
, за которым следует Exit
.
Однако в некоторых случаях у меня могут быть Start``Start
и Exit
или Start
, за которыми следует Exit``Exit
. Я попытался определить последующие запуски и выходы через этот код:
library(dplyr)
df <- df %>% mutate(same = ifelse(Data == lead(Data), 1, 0))
Это дает мне следующий вывод:
Time Data same
1 2018-07-08 19:04:14 Start 0
2 2018-07-08 19:08:41 Exit 0
3 2018-01-31 12:31:41 Start 1
4 2018-01-31 13:50:50 Start 0
5 2018-01-31 13:52:31 Exit 0
6 2018-01-31 17:29:47 Start 0
7 2018-01-31 17:38:43 Exit 1
8 2018-01-31 17:38:43 Exit NA
Я пытаюсь выяснить, как определить секунду Start
, если в последовательности два Start
, и first Exit
, если есть два Exit
в последовательности с маркером 1. Желаемый результат выглядит следующим образом:
Time Data same
1 2018-07-08 19:04:14 Start 0
2 2018-07-08 19:08:41 Exit 0
3 2018-01-31 12:31:41 Start 0
4 2018-01-31 13:50:50 Start 1 #this should be one
5 2018-01-31 13:52:31 Exit 0
6 2018-01-31 17:29:47 Start 0
7 2018-01-31 17:38:43 Exit 1 #this should be one
8 2018-01-31 17:38:43 Exit 0
Я пытался использовать условие if
в ifelse
, но оно пошло не так.