如何在R中创建包含长数据的Kaplan Meier图?

w8f9ii69  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(104)

我想使用Kaplan Meier模型收集一些关于sales数据的基本统计数据,我的数据是长格式的,每个观察到的单位在市场上的每一天都有一个单独的行,如下所示:

id     date        time_on_market     sold
1      2022-01-01  0                  0
1      2022-01-02  1                  0
1      2022-01-03  2                  1
2      2022-02-14  0                  0
2      2022-02-15  1                  1

有没有一种方法可以做到这一点,而不必将数据透视为宽格式?
当数据采用宽格式时,我曾使用KM绘制生存曲线,例如:

id     date        time_on_market     sold
1      2022-01-03  2                  1
2      2022-02-15  1                  1
3      2022-03-30  30                 0

其中每一行都是一个唯一的观察值、总的上市时间以及是否售出的虚拟变量,但是当数据很长时,我似乎无法计算出documentation来创建正确类型的对象。

pacman::p_load(survival, ggsurvfit, gtsummary, tidycmprsk, survminer)

survfit2(Surv(time_on_market, sold) ~ 1, data = sales) %>% 
  ggsurvfit()

所得到的曲线是不正确的。
任何帮助都是感激的!!

ht4b089n

ht4b089n1#

您需要的行已经存在于数据中,只需使用slice_max提取它们

library(tidyverse)

sales_filtered <- sales %>%
  group_by(id) %>%
  slice_max(time_on_market)

sales_filtered
#> # A tibble: 2 x 4
#> # Groups:   id [2]
#>      id date       time_on_market  sold
#>   <int> <chr>               <int> <int>
#> 1     1 2022-01-03              2     1
#> 2     2 2022-02-15              1     1

现在您可以执行以下操作:

survfit2(Surv(time_on_market, sold) ~ 1, data = sales_filtered) %>% 
  ggsurvfit()

相关问题