【发布时间】:2022-01-21 09:51:27
【问题描述】:
我有一个“长格式”的数据框,主题被多次观察:
dat1 <- tribble(
~CODE, ~V1, ~V2, ~session, ~date,
"1111P11", 2, 3, 1, "2020-09-01",
"1111P11", 3, 2, 2, "2020-09-08",
"1111P11", 1, 3, 3, "2020-09-15",
"1111P11", 3, 4, 4, "2020-09-25",
"2222P22", 5, 1, 1, "2020-05-15",
"2222P22", 3, 2, 2, "2020-05-22",
"2222P22", 1, 4, 3, "2020-05-30",
"3333P33", 3, 4, 1, "2020-06-10",
"3333P33", 4, 1, 2, "2020-06-17",
"3333P33", 3, 5, 3, "2020-06-24",
"3333P33", 4, 2, 4, "2020-07-01",
"3333P33", 3, 4, 5, "2020-07-10"
)
dat1$date <- date(dat$date)
我想为每个主题计算每个会话和第一个会话之间的时间间隔,这应该会导致:
dat2 <- tribble(
~CODE, ~V1, ~V2, ~session, ~date, ~interv.1st.sess,
"1111P11", 2, 3, 1, "2020-09-01", 0,
"1111P11", 3, 2, 2, "2020-09-08", 7,
"1111P11", 1, 3, 3, "2020-09-15", 14,
"1111P11", 3, 4, 4, "2020-09-25", 24,
"2222P22", 5, 1, 1, "2020-05-15", 0,
"2222P22", 3, 2, 2, "2020-05-22", 7,
"2222P22", 1, 4, 3, "2020-05-30", 15,
"3333P33", 3, 4, 1, "2020-06-10", 0,
"3333P33", 4, 1, 2, "2020-06-17", 7,
"3333P33", 3, 5, 3, "2020-06-24", 14,
"3333P33", 4, 2, 4, "2020-07-01", 21,
"3333P33", 3, 4, 5, "2020-07-10", 30
)
我一直在尝试用group_by() 以某种方式解决这个问题,但没有成功。有没有一种 tidyverse 方式(或任何其他方式)可以做到这一点?
【问题讨论】:
标签: r dplyr tidyverse lubridate