【问题标题】:Survival dataset split by year starting at January 1st从 1 月 1 日开始按年份划分的生存数据集
【发布时间】:2017-12-28 02:32:41
【问题描述】:

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

在下面的数据集中,时间 = 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

【问题讨论】:

    标签: r cox-regression survival


    【解决方案1】:

    不确定我是否理解您想要的内容,但您希望在 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多