生存数据集从1月1日开始按年分配

时间:2017-07-21 22:52:03

标签: r cox-regression survival

我有以下生存数据集,我希望在每年的1月1日前将时间间隔分开。例如,对于personid 1220,我将在1912-01-01,1913-01-01,1914-01-01,1915-01-01进行拆分。我尝试使用survSplit,但他们只能使用数字向量。如果有其他方法,请告诉我吗?

在下面的数据集中,time = EndDate - StartDate。以下是我到目前为止的情况:

test.ts <- survSplit(Surv(time, censor) ~ ., 
                          data = test,
                          cut = seq(0, 1826.25, 365.25),
                          episode = "tgroup")

但每年只会分开。

    ID        EndDate  StartDate censor time       status
1 1220 1915-03-01 1911-10-04      1 1244        Alive
3 4599 1906-02-15 1903-05-16      1 1006        Alive
4 6375 1899-04-10 1896-10-27      1  895        Alive
6 6386 1929-10-05 1922-01-26      0 1826  Outmigrated
7 6389 1933-12-08 1929-10-05      1 1525  Outmigrated
8 6390 1932-01-17 1927-07-24      1 1638 Dead 0-4 yrs

1 个答案:

答案 0 :(得分:0)

我不确定我理解你想要什么,但是你希望在Start; End,你可以做的每年的数据框中复制信息:

library(tidyverse)
library(lubridate)

df %>%
  as_tibble() %>%
  mutate(
    RangeYear = map2(StartDate, EndDate, function(start, end) {
      start <- `if`(day(start) == 1 && month(start) == 1, 
                    year(start), 
                    year(start) + 1)
      seq(start, year(end))
    })
  ) %>%
  unnest(RangeYear)