我想计算纵向调查数据的“自基线以来的天数”,该数据以长数据格式组织,但我无法按参与者的 ID 进行分组。我的数据看起来像这样:
Participant Date
1 2023-04-19
1 2023-05-01
1 2023-05-16
2 2023-11-04
2 2023-11-14
3 2024-01-02
3 2024-01-15
3 2024-02-01
我想计算每个参与者的“自基线以来的天数”。像这样的东西:
Participant Date Days since BL
1 2023-04-19 0
1 2023-05-01 12
1 2023-05-16 27
2 2023-11-04 0
2 2023-11-14 10
3 2024-01-02 0
3 2024-01-15 14
3 2024-02-01 31
我尝试使用的代码看起来像这样
df <- df %>%
group_by(Participant) %>%
mutate(Date = as.Date(Date, format='%y/%m/%d')) %>%
mutate(DIFF=Date - lag(Date))
但是,计算值不正确,并且似乎没有以参与者特定的方式进行分组。我希望能够将每个参与者的第一个日期设置为他们的基准(即 0),然后,对于以下日期,从基准开始的天数是根据每个参与者自己的基准日期计算的。
library(tidyverse)
d = data.frame(Participant = rep(c("A","B"), each=50),
Date = seq(as.Date("2023-01-01"), as.Date("2023-01-01") + 99, by="2 days"))
d %>%
arrange(Participant, Date) %>%
group_by(Participant) %>%
mutate(DIFF = Date - min(Date))
#> # A tibble: 100 × 3
#> # Groups: Participant [2]
#> Participant Date DIFF
#> <chr> <date> <drtn>
#> 1 A 2023-01-01 0 days
#> 2 A 2023-01-03 2 days
#> 3 A 2023-01-05 4 days
#> 4 A 2023-01-07 6 days
#> 5 A 2023-01-09 8 days
#> 6 A 2023-01-11 10 days
#> 7 A 2023-01-13 12 days
#> 8 A 2023-01-15 14 days
#> 9 A 2023-01-17 16 days
#> 10 A 2023-01-19 18 days
#> # ℹ 90 more rows
创建于 2024-04-11,使用 reprex v2.1.0