我正在為希望在 Excel 中完成圖表的客戶開發一個專案。
我需要做的圖表之一是累積危害,這是我通過 Survival::survfit 獲得的,
我的問題是excel不能做階梯圖,所以需要對資料進行轉換,所以每個時間點都出現了兩次;一次使用先前的累積危害,一次使用該時間點的累積危害。
在 Excel 中執行此操作相對容易,但很煩人且耗時 - 在 R 中是否有一種聰明的方法來執行此操作?
我是一個相對較新的 r 用戶,我一直無法找到一種方法來做我想做的事。
我嘗試在下面展示我得到的和我想要的:
#Load survival package"
library(survival)
#Create survfit object
Survival_Function <- survfit(Surv(lung$time,
lung$status == 2)~1)
#extract cumulative hazards
cumhaz <- data.frame(Survival_Function$time, Survival_Function$cumhaz)
head(cumhaz)
給我以下內容:
Survival_Function.time Survival_Function.cumhaz
1 5 0.004385965
2 11 0.017601824
3 12 0.022066110
4 13 0.031034720
5 15 0.035559606
6 26 0.040105061
但是為了讓 excel 正確制作圖表,我需要它看起來像這樣:
Survival_Function.time Survival_Function.cumhaz
1 5 0.004385965
2 11 0.004385965
3 11 0.017601824
4 12 0.017601824
5 12 0.022066110
6 13 0.022066110
7 13 0.031034720
8 15 0.031034720
9 15 0.035559606
10 26 0.035559606
11 26 0.040105061
uj5u.com熱心網友回復:
根據您的代碼,一種簡單的方法是重復列,每個元素重復兩次。從這里,您可以從列中洗掉第一個元素,從time列中洗掉最后一個元素,cumhaz然后合并。此代碼的一個示例是:
x <- data.frame(
Time = c(1,2,3,4,5),
Hazard = c(6,7,8,9,10)
)
data.frame(
Time = rep(x$Time, each = 2)[-1], #Repeats the time, removing the first to give you the desired formatting
Hazard = rep(x$Hazard, each = 2)[-length(rep(x$Hazard, each = 2))] # By removing the last element is means that they have the same length
)
這會為您提供所需的輸出。
注意:如果你有大量的列,這會很麻煩,但是只有兩列左右應該沒問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/533428.html
標籤:r擅长生存分析
