我进行了一项队列研究,参与者的观察时间不同,范围从0到1000天。我想算出参与者在时间0以后每年花费了多少时间。例如,在观察的第二年中花了多少总时间(假设某些参与者在这一年退出)?
一些示例数据:
days_in_study <- c(12, 500, 344, 678, 987, 129, 200, 57, 843, 611, 113, 98, 212, 399)
years_in_study <- days_in_study / 365
到目前为止,我最好的方法是编写一个函数,计算出特定年份的风险时间,然后将其应用于每年(例如,第一年,第二年)。
fun <- function(x, time) sum(time >= x) +
sum((time - x + 1)[time < x & time >= (x - 1)])
函数的第一部分将在x
年之后幸存的参与者相加,第二部分将在x
年退出的参与者相加年数。
现在可以多年使用该功能:
years <- 1:5
sapply(years, fun, time = years_in_study)
# [1] 9.191781 3.994521 1.013699 0.000000 0.000000
# i.e. 9.19 person-years during the first year of observation
# 3.99 person-years during the second year
最好的方法是什么?