首页 > 解决方案 > 纵向数据集 - 两个日期之间的差异

问题描述

我有一个纵向数据集,我从 Excel 导入到 R 中,如下所示:

STUDYID  VISIT#  VISITDate 
1         1      2012-12-19
1         2      2018-09-19
2         1      2013-04-03
2         2      2014-05-14
2         3      2016-05-12

在这个数据集中,每个患者/研究 ID 有不同的医院就诊次数,他们的首次就诊日期可能因人而异。我想创建一个新的时间变量,它基本上是自首次访问以来的年数,因此数据集将如下所示:

STUDYID  VISIT#  VISITDate   Time(years)
1         1      2012-12-19    0
1         2      2018-09-19    5
2         1      2013-04-03    0
2         2      2014-05-14    1
2         3      2016-05-12    3

创建这样一个时间变量的原因是评估随时间变化的差分回归效应(这是一个连续变量)。有没有办法在 R 中创建一个像这样的新时间变量,以便我可以在回归分析中将其用作自变量?

在此处输入图像描述

标签: rtimelongitudinal

解决方案


考虑按组ave计算最小值,然后将日期差转换为整数年:VISITDateSTUDYID

df <- within(df, {
        minVISITDate <- ave(VISITDate, STUDYID, FUN=min)
        Time <- floor(as.double(difftime(VISITDate, minVISITDate, unit="days") / 365))
        rm(minVISITDate)
    })

df
#  STUDYID VISIT#  VISITDate Time
# 1      1      1 2012-12-19    0 
# 2      1      2 2018-09-19    5 
# 3      2      1 2013-04-03    0
# 4      2      2 2014-05-14    1 
# 5      2      3 2016-05-12    3

推荐阅读