В моем наборе данных идентификатор может появляться один, два или три или более раз.Я пытаюсь определить временной интервал между каждым из этих разных экземпляров.т. е. каков интервал между первым и вторым появлением идентификатора «AA» И каков интервал между первым и вторым, вторым и третьим появлением идентификатора «DD» и т. д. и т. д.
Вот некоторые примеры данныхчтобы проиллюстрировать:
library(tidyverse)
library(lubridate)
set.seed(100)
ID <- c("AA", "AA", "AB", "AB", "AC", "AC", "AD", "DD", "DD", "DD",
"CA", "CA", "FS", "FS", "FS", "BA", "BA", "TZ", "TZ", "TZ")
rowNum <- c(1:20)
date <- c("2013-05-01", "2014-11-01", "2014-10-01", "2015-09-01",
"2014-10-01", "2015-09-01", "2016-01-01", "2017-02-01", "2013-08-01",
"2013-05-01", "2011-06-01", "2011-12-01", "2010-09-01", "2012-06-01",
"2013-12-01", "2015-01-01", "2015-09-01", "2015-02-01", "2016-04-01",
"2017-01-01")
sampleData <- as.data.frame(cbind(ID, rowNum, date)) %>%
mutate(date = ymd(date)) %>%
mutate(value_x = runif(length(ID))) %>%
mutate(value_y = runif(length(ID))) %>%
mutate(value_z = runif(length(ID)))
Моей первоначальной мыслью было распространение данных с использованием индекса и использование mutate
для расчета разницы:
test2 <- sampleData %>%
group_by(ID) %>%
mutate(index = row_number(ID)) %>%
spread(index, date) %>%
mutate(time_interval1_2 = interval(`1`, `2`))
Однако при таком подходе даты заканчиваютсяна разных рядах, поэтому я не могу рассчитать разницу между ними.Любые идеи о том, как решить эту маленькую проблему с помощью tidyverse
, будут высоко оценены!
Заранее спасибо.