У меня есть фрейм данных временных рядов для нескольких лиц. Данные состоят из поверхностных интервалов и интервалов погружения животных с течением времени для каждого человека. Для каждого интервала поверхности я хотел бы использовать ggplot, чтобы отобразить продолжительность интервала поверхности относительно продолжительности предыдущего погружения, где это возможно. Если бы в ряду было два поверхностных интервала, я бы хотел их проигнорировать и просто нанести на карту поверхности, которые погружаются прямо перед ними. Я хотел бы сделать это по индивидуальному идентификатору. Ниже приведены некоторые примеры данных:
Я бы предпочел использовать функцию group_by () пакета dplyr для отдельных лиц, но не уверен, как выбрать каждое погружение и связать его со следующим (последующим) всплытием.
df <- data.frame(ID=c("A","A","A","A","A","A","A","A","A","B","B","B","B","B","B","B","B","B"),
What=c("Dive", "Surface", "Dive","Surface","Dive", "Surface", "Surface", "Dive", "Surface", "Dive", "Surface", "Dive", "Dive", "Surface", "Dive", "Surface", "Dive", "Surface"),
Start=c("2010-05-09 17:29:45", "2010-05-09 17:56:24", "2010-05-09 18:22:15", "2010-05-09 18:52:38", "2010-05-09 18:59:02", "2010-05-09 19:24:37","2010-05-09 19:30:00", "2010-05-09 19:30:57", "2010-05-09 19:48:00","2010-05-03 18:49:35", "2010-05-03 18:58:00", "2010-05-03 19:27:51","2010-05-03 19:35:42", "2010-05-03 20:15:41", "2010-05-03 20:24:13","2010-05-03 20:53:32", "2010-05-03 21:01:31", "2010-05-03 21:40:26"),
End=c("2010-05-09 17:56:24", "2010-05-09 18:22:15", "2010-05-09 18:52:38","2010-05-09 18:59:02", "2010-05-09 19:24:37", "2010-05-09 19:29:28","2010-05-09 19:30:57", "2010-05-09 19:48:00", "2010-05-09 19:49:02", "2010-05-03 18:58:06", "2010-05-03 19:27:51", "2010-05-03 19:35:42", "2010-05-03 20:15:41", "2010-05-03 20:24:13", "2010-05-03 20:53:32", "2010-05-03 21:01:31", "2010-05-03 21:40:26", "2010-05-03 21:48:44"),
Duration = c(26.65, 25.85, 30.38, 6.40, 25.58, 4.85, 0.95, 17.05, 1.03, 8.52, 29.85, 7.85, 39.98, 8.53, 29.32, 7.98, 38.92, 8.30))
df$Start<-as.POSIXct(df$Start, format = "%Y-%m-%d %H:%M:%S")
df$End<-as.POSIXct(df$End, format = "%Y-%m-%d %H:%M:%S")
Я хотел бы создать ggplot с осью x в качестве продолжительности поверхности и осью y предыдущей продолжительности погружения. Если в ряду два погружения, проигнорируйте первое и нанесите второе против следующего всплытия;то же самое относится к нескольким поверхностям;Я просто хотел бы выбрать поверхности, которые имеют погружение прямо перед ними.
Любая помощь будет принята с благодарностью!