不能在某些data.frames

时间:2018-02-17 12:54:07

标签: r dataframe survival-analysis

我有一个数据集我将用于生存分析,当我使用整套时似乎工作正常。但是,一旦我使用data[which(data$variable1=="somevalue")]将其切割成较小的数据帧,事情似乎就会崩溃。

大多数较小的数据帧工作正常,但有些是个问题。在有问题的问题中,我可以毫无问题地使用summary(survfit(Surv(time, status)~variable2, data=smalldataframe))$surv,但是当我尝试summary(survfit(Surv(time, status)~variable2, data=smalldataframe), time=5)$surv时,它会抛出Error in array(xx, dim = dd) : negative length vectors are not allowed

我试过查看数据,看看我是否有任何奇怪的值,比如负面时间,但没有。此外,如果出现问题,完整的数据框也应该抛出错误,但事实并非如此。所有较小的数据帧都是使用相同的代码行创建的,所以我也不明白它们为什么表现不同。而且大多数情况下,我不明白为什么summary(survfit(...))$survplot(survfit(...))一样正常,但是当我想在特定时间计算生存时,它突然不再喜欢这些数据了。

这是一个有问题的数据框

test <-
structure(list(time2 = c(0.15, 2.08, 2.06, 0.32, 39.45, 39.09, 
2.57, 3.64, 13.57, 36.57, 36.26, 0.78, 0.1, 33.94, 3.1, NA, 1.77, 
28.38, 1.24, NA, 1.87, 25.83, 2.62, 1.57, 1.6, 22.74, 21.03, 
20.54, 20.03, 0.97, 19.35, 18.09, 2.61, 17.68, NA, 3.85, 3.52, 
11.22, 11.52, 11.04, 10.51, 1.68, 10.4, 10.61, 9.01, 9.05, 7.8, 
0.11, 4.83), status = c(1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 
0, 1, NA, 1, 1, 1, NA, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 
0, NA, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0), cas_dg = c(1, 
2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 
6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 
8, 9, 9, 9, 9, 9)), .Names = c("time2", "status", "cas_dg"), row.names = c(NA, -49L), class = "data.frame")

给我带来麻烦的电话是summary(survfit(Surv(time2, status)~cas_dg, data=test), time=5)$surv,只有一些较小的数据帧。

1 个答案:

答案 0 :(得分:2)

您需要在extend=TRUE中使用参数summary;根据{{​​1}}:

  

extend:逻辑值:如果为TRUE,则打印所有指定的信息             '时间',即使在结束时没有留下任何科目             指定'时间'。这仅在'时间'有效             论证存在。

因此,对于您的示例数据,您可以执行以下操作:

?summary.survfit