r - 纵向数据集 - 两个日期之间的差异
问题描述
我有一个纵向数据集,我从 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 中创建一个像这样的新时间变量,以便我可以在回归分析中将其用作自变量?
解决方案
考虑按组ave
计算最小值,然后将日期差转换为整数年:VISITDate
STUDYID
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
推荐阅读
- javascript - 使用带有快照的 ESLint 进行静态分析
- c# - 如何将数据添加到现有行 Sql Server 数据库中
- laravel - 如何在 Laravel 中不使用 url 将变量传递给视图?
- python-3.x - 删除边界框点之间的网格点
- javascript - 节点获取连接 ETIMEDOUT 错误
- javascript - 在 Node 中获取 SQS retrieveMessages 解析
- python - Python 3.6.5 在 'tuple' 和 'str' 错误消息的实例之间返回 '<' not supported
- scala - scala specs2模拟http客户端响应
- excel - Excel 中的研究数据分析:列索引
- php - 计算在会议中注册的参与者数量(此集合实例上不存在属性 [participants])