2017-04-14 12 views
0

OSとPFS(ここでは偽の結果)など、同じプロットで2つの異なるサバイバルカーブをオーバーレイしたいと思います。サバイバルプロットをオーバーレイする方法


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) 

を、私はOSとPFSの両方のためのsurvfit作成:

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

あなたは次のようにGGallyパッケージからggsurv機能を使用することができます。データフレーム内の両方の変数グループを結合し、「タイプ」列を追加します。後でプロットの呼び出しで、タイプを参照します。

あなたのデータ構造を使用し、それを「テスト」と命名しました。その後、私はそれを "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) 

を私はこれがあなたが望むものであるかどうかをお知らせください。

関連する問題