2017-04-14 72 views
0

我想在同一圖上疊加兩條不同的生存曲線,例如OS et PFS(這裏是錯誤的結果)。如何覆蓋生存圖


N pt. OS.  OS_Time_(years). PFS.  PFS_Time_(years). 
__________________________________________________________________ 
1.  1   12     0   12 
2.  0   10     1   8 
3.  0   14     0   14 
4.  0   10     0   10 
5.  1   11     1   8 
6.  1   16     1   6 
7.  0   11     1   4 
8.  0   12     1   10 
9.  1   9     0   9 
10  1   10     1   9 
__________________________________________________________ 

首先,我輸入我的數據集:

library(readxl) 
testR <- read_excel("~/test.xlsx") 
View(testR) 

然後,我創建了兩個操作系統survfit和PFS:

OS<-survfit(Surv(OS_t,OS)~1, data=test) 
PFS<-survfit(Surv(PFS_t,PFS)~1, data=test) 

最後,我可以繪製每一個感謝:

plot(OS) 
plot(PFS) 
例如

(或ggplot2 ...)。

在這裏我的問題,如果我想疊加在同一個圖上的2個,我該怎麼辦?

我試圖multipleplot或

ggplot(testR, aes(x)) +     # basic graphical object 
    geom_line(aes(y=y1), colour="red") + # first layer 
    geom_line(aes(y=y2), colour="green") # second layer 

但它沒有工作(但我不知道正確使用)。 有人可以幫我嗎?

非常感謝

這裏是我的數據樣本代碼:

test <- structure(list(ID = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1, 2, 3, 4, 5, 6, 7, 8, 9), 
         Sex = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1), 
         Tabac = c(2, 0, 1, 1, 0, 0, 2, 0, 0, 0, 1, 1, 1, 0, 2, 0, 1, 1, 1), 
         Bmi = c(20, 37, 37, 25, 28, 38, 16, 27, 26, 28, 15, 36, 20, 17, 28, 37, 27, 26, 18), 
         Age = c(75, 56, 45, 65, 76, 34, 87, 43, 67, 90, 56, 37, 84, 45, 80, 87, 90, 65, 23), c(0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0), 
         OS_times = c(2, 4, 4, 2, 3, 5, 5, 3, 2, 2, 4, 1, 3, 2, 4, 3, 4, 3, 2), 
         OS = c(0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0), 
         PFS_time = c(1, 2, 1, 1, 3, 4, 3, 1, 2, 2, 4, 1, 2, 2, 2, 3, 4, 3, 2), 
         PFS = c(1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0)), 
        .Names = c("ID", "Sex", "Tabac", "Bmi", "Age", "LN", "OS_times", "OS", "PFS_time", "PFS"), 
        class = c("tbl_df", "tbl", "data.frame"), 
        row.names = c(NA, -19L)) 
+0

請使用dput()添加一些數據,以便我們可以重現您的嘗試。看看[如何使一個偉大的R可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – Marcelo

回答

0

您可以通過以下方式使用ggsurv函數從GGally包。將兩組變量組合在一個數據框中並添加一個「類型」列。稍後在對情節的調用中,您可以參考該類型。

我用你的數據結構並命名爲「test」。之後,我將其轉換爲名爲「testdf」的數據框。

library(GGally) 

testdf <- data.frame(test) 
OS_PFS1 <- data.frame(life = testdf$OS, life_times = testdf$OS_times, type= "OS") 
OS_PFS2 <- data.frame(life = testdf$PFS, life_times = testdf$PFS_time, type= "PFS") 
OS_PFS <- rbind(OS_PFS1, OS_PFS2) 

sf.OS_PFS <- survfit(Surv(life_times, life) ~ type, data = OS_PFS) 
ggsurv(sf.OS_PFS) 

,如果你想顯示的置信區間:

ggsurv(sf.OS_PFS, CI = TRUE) 

請讓我知道這是否是你想要的。