【问题标题】:Survival times in survival analysis生存分析中的生存时间
【发布时间】:2016-09-30 16:07:24
【问题描述】:

我在分析我拥有的生存数据集时遇到了问题。我会将数据集的dput 输出放在github链接中,以免污染问题。

这是https://gist.github.com/anonymous/4fdff1c6d0853c41939e2a67d9e0e45b的数据

在这个数据集中,我想为每个组绘制生存曲线图,所以我需要创建一个survfit() 模型。

变量 W1,W2,..,W43 代表周数,数字代表某种度量。当我在任何一周有一个点 . 时,这意味着该人在该周死亡,因此接下来的每个星期都用点 . 标记

在生存模型中,这种死亡代表一个事件(失败),如果个人在所有几周内存活,他代表一个删失数据。

要按照我知道的方式制作生存模型,我需要下面这样的数据

time=c(3,4,8,8,5,2)
event=c(1,1,0,0,1,1)

在这种情况下,时间表示以周为单位的死亡时间,如果死亡则事件为 1,如果被删失则为 0。

编辑:我想到了一种可能的解决方案,但我不知道该怎么做。思路如下

1) 取所有列 W1,W2,...,W43,如果是数字则输入 1,如果是点则输入 0.

2) 创建一个表示时间的新变量,该变量的值将是 W1 到 W43 列的总和,因此它将是 W1+W2+...+W43。

3) 创建一个代表事件的新变量,如果 time=43 这意味着个人一直幸存,那么它将为 0(删失),如果小于 43 则意味着个人死亡,那么变量将是 1。

有人可以帮我做吗?

【问题讨论】:

  • 新建议也可能会奏效。如果您更喜欢将is.numeric(as.numeric(row_values)) 的数量相加,请继续发布答案。我猜你会学到很多关于使用apply 的陷阱,但这对于R-newb 来说将是一个很好的练习。 (但我碰巧认为使用 which( condition )[1] 是更 R-ish 的编码风格。)

标签: r plot


【解决方案1】:

我将您的数据集命名为 sdat,这些操作添加了两个额外的列:

sdat$time= apply(sdat[ ,grepl("W", names(sdat))], 1 , #work by rows on "W"-columns
                    function(r) which( r==".")[1] )  # seq-number of first "."
sdat$event <- as.numeric( !is.na(sdat$time) ) # convert NA's to logical and to 1,0
sdat$time= ifelse( is.na(sdat$time) , 43, sdat$time) # set time to 43 for survivors

 # Check results
 head( sdat[ , !grepl("W", names(sdat))] ) # remove "W" cols
  Group Ref Sex  M1   M2 M3  M4 time event
1    11   4   1 959 1940 10 184   23     1
2    11   4   1 960 1770 10 189   31     1
3    11   4   1 961 1970 10 166   23     1
4    11   4   1 962 1870  1 180   43     0
5    11   4   1 964 1780 11 239   43     0
6    12   4   1 966 1980 11 182   43     1

作为一名分析师,我会问对导致死亡的不同“W”数字赋予什么含义,但这不是你的问题。

【讨论】:

  • 你能检查我上次的编辑吗?看起来和我的想法一样。
猜你喜欢
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多