我有以下生存数据集,我希望在每年的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
答案 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)