我想计算纵向调查数据的"自基线以来的天数",该数据以长数据格式组织,但我在按参与者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

我try 使用的代码看起来像这样

df <- df %>%
group_by(Participant) %>%
mutate(Date = as.Date(Date, format='%y/%m/%d')) %>%
mutate(DIFF=Date - lag(Date))

然而,计算出的值不正确,并且似乎没有以参与者特定的方式进行分组.我希望能够将每个参与者的第一个日期设置为他们的基线(即0),然后,对于以下日期,根据每个参与者自己的基线日期计算距基线的天数.

推荐答案

假设基线日期是最早的日期,则可以执行Date - min(Date)以获取自基线以来的时间.例如:

library(tidyverse)

# Fake data
d = data.frame(Participant = rep(c("A","B","C"), each=3),
               Date = seq(as.Date("2023-01-01"), as.Date("2023-01-01") + 5, by="2 days") %>% 
                 format(., "%y/%m/%d"))

d %>% 
  mutate(Date = as.Date(Date, format="%y/%m/%d")) %>% 
  group_by(Participant) %>% 
  mutate(DIFF = Date - min(Date))
#> # A tibble: 9 × 3
#> # Groups:   Participant [3]
#>   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 B           2023-01-01 0 days
#> 5 B           2023-01-03 2 days
#> 6 B           2023-01-05 4 days
#> 7 C           2023-01-01 0 days
#> 8 C           2023-01-03 2 days
#> 9 C           2023-01-05 4 days

创建于2024-04-11,reprex v2.1.0

R相关问答推荐

如何对数据集进行逆向工程?

如何从R中的字符串元素中减go 一个数字?

如何优化向量的以下条件赋值?

将Posict转换为数字时的负时间(以秒为单位)

在数据帧列表上绘制GGPUP

在带有`R`中的`ggmosaic`的马赛克图中使用图案而不是 colored颜色

如何在PDF格式的kableExtra表格中显示管道字符?

根据约束随机填充向量的元素

如何将一列中的值拆分到R中各自的列中

'使用`purrr::pwalk`从嵌套的嵌套框架中的列表列保存ggplots时出现未使用的参数错误

观察器中的inaliateLater的位置

按镜像列值自定义行顺序

根据排名的顶点属性调整曲线图布局(&Q)

重写时间间隔模糊连接以减少内存消耗

Ggplot2:添加更多特定 colored颜色 的线条

我有2011-2022年的年度数据.如何计算最低年份和最高年份之间的差额?

如何将两个用不同的运算符替换*的矩阵相乘

如何在R曲线图弹出窗口中更改r和theta标签

如何在类应用函数中访问函数本身

当y为负值时,无法使stat_cor正确定位到底部?