Dalam kumpulan data saya, ID dapat muncul sekali, dua kali, atau tiga kali atau lebih. Saya mencoba menghitung interval waktu antara masing-masing kejadian berbeda ini. yaitu Berapa interval antara kemunculan ID "AA" pertama dan kedua DAN berapa interval antara kemunculan ID "DD" pertama dan kedua, dan kedua dan ketiga, dll.
Berikut beberapa contoh data untuk diilustrasikan:
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)))
Pikiran awal saya adalah menyebarkan data menggunakan indeks dan menggunakan mutate
untuk mengetahui perbedaannya:
test2 <- sampleData %>%
group_by(ID) %>%
mutate(index = row_number(ID)) %>%
spread(index, date) %>%
mutate(time_interval1_2 = interval(`1`, `2`))
Namun dengan menggunakan pendekatan ini, tanggal-tanggal tersebut berakhir pada baris yang berbeda, jadi saya tidak dapat menghitung perbedaan di antara keduanya. Adakah ide tentang cara mengatasi masalah kecil ini menggunakan tidyverse
akan sangat dihargai!
Terima kasih sebelumnya.