2013-04-02 48 views
2

R使用包survival的一部分,我產生使用print(fit)這樣訪問只有一個存活對象

library(survival) 
fit <- survfit(Surv(time, status) ~ ph.ecog + sex, data=lung) 

我的Kaplan-Meiser對象,我得到

> print(fit) 
Call: survfit(formula = Surv(time, status) ~ ph.ecog + sex, data = lung) 

    1 observation deleted due to missingness 
       records n.max n.start events median 0.95LCL 0.95UCL 
ph.ecog=0, sex=1  36 36  36  28 353  303  558 
ph.ecog=0, sex=2  27 27  27  9 705  350  NA 
ph.ecog=1, sex=1  71 71  71  54 239  207  363 
ph.ecog=1, sex=2  42 42  42  28 450  345  687 
ph.ecog=2, sex=1  29 29  29  28 166  105  288 
ph.ecog=2, sex=2  21 21  21  16 239  199  444 
ph.ecog=3, sex=1  1  1  1  1 118  NA  NA 

如何我現在可以訪問只是這個整體生存對象的一部分?像打印結果僅爲sex=1

我當然可以做類似

fit_sex1 <- survfit(Surv(time, status) ~ ph.ecog + sex, data=lung[lung$sex == 1,]) 
print(fit_sex1) 

但使用真正的大數據集,它是一種不利於重建生存對象多次。

+1

有了'grep'就可以實現這一點。看到我的答案。 – JT85

回答

1

您可以使用grep

containsText <- "sex=1" 
fit_sex1 <- fit[c(grep(containsText ,names(fit$strata)))] 
print(fit_sex1) 
+0

謝謝!作品,但這真的是最優雅的方式? – speendo

+0

我不知道你是否可以找到更「優雅」的方式,但這非常靈活。 – JT85

+0

夠公平的。我只是想知道是否有一種預期的方式來訪問數據。您的解決方案看起來像一個非常好的解決方法。如果有人想要添加其他解決方案,我會等待。如果沒有,我一定會接受你的答案! – speendo