是否有R函数可以将时间序列转换为excel可以制作阶梯图



我正在为客户做一个项目,他们想在Excel中完成他们的图表。

我需要做的一个图表是累积风险,这是我在Survival:: Survival中得到的,

我的问题是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

根据您的代码,一个简单的方法是重复列,每个元素重复两次。从这里,您可以从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
)

,这给了你想要的输出。

注意:如果你有大量的列,这将是麻烦的,但只有两个左右,这应该是好的。

最新更新