0

我有以下生存数据集,我想在每年的 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

4

1 回答 1

0

不知道我理解你想要什么,但你想在开始的范围内复制数据框中的信息;结束,你可以这样做:

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)
于 2017-07-22T08:24:40.947 回答