我不想将cox回归的输出导出到我可以放入文章的表中。我想最好的方法是使用xtable:
library(survival)
data(pbc)
fit.pbc <- coxph(Surv(time, status==2) ~ age + edema + log(bili) +
log(protime) + log(albumin), data=pbc)
summary(fit.pbc)
library(xtable)
xtable(fit.pbc)
现在我想对输出执行以下操作:
提前致谢!
答案 0 :(得分:9)
我首先看一下survival
包如何构造默认打印的表。
要查找执行该打印的函数,请检查适合对象的类,然后查找该类的打印方法:
class(fit.pbc)
# [1] "coxph"
grep("coxph", methods("print"), value=TRUE)
# [1] "print.coxph" "print.coxph.null"
# [3] "print.coxph.penal" "print.summary.coxph"
看了print.coxph
后,我想出了这个:
cox <- fit.pbc
# Prepare the columns
beta <- coef(cox)
se <- sqrt(diag(cox$var))
p <- 1 - pchisq((beta/se)^2, 1)
CI <- round(confint(cox), 3)
# Bind columns together, and select desired rows
res <- cbind(beta, se = exp(beta), CI, p)
res <- res[c("age", "log(protime)"),]
# Print results in a LaTeX-ready form
xtable(res)
答案 1 :(得分:3)
xtable(round(summary(fit.pbc)$conf.int[c(1,3),],3))
#-----------------------------#
% latex table generated in R 2.13.1 by xtable 1.5-6 package
% Sat Oct 15 18:36:04 2011
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrrrr}
\hline
& exp(coef) & exp(-coef) & lower .95 & upper .95 \\
\hline
age & 1.04 & 0.96 & 1.02 & 1.06 \\
log(bili) & 2.37 & 0.42 & 2.02 & 2.79 \\
\hline
\end{tabular}
\end{center}
\end{table}
这显示了您在摘要对象上使用str看到的内容
str(summary(fit.pbc))
# snipped
$ conf.int : num [1:5, 1:4] 1.0404 2.4505 2.3716 10.8791 0.0815 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:5] "age" "edema" "log(bili)" "log(protime)" ...
.. ..$ : chr [1:4] "exp(coef)" "exp(-coef)" "lower .95" "upper .95"