R - 尝试将survdiff的输出出现在Sweave的latex pdf文件中

时间:2016-03-23 09:59:05

标签: r pdf latex sweave

我试图使用R,Sweave和latex在pdf中打印出我的生存信息。

我正在复制下面的所有相关代码,但这是我需要打印的部分:

        N Observed Expected (O-E)^2/E (O-E)^2/V
male=0 10        3     8.57     3.624      4.67
male=1 65       48    42.43     0.732      4.67

 Chisq= 4.7  on 1 degrees of freedom, p= 0.0306 

以下是让我几乎到达我想要的地方的代码:

s.male <- survfit( Surv(futime, status)~ strata(male), shou3, conf.type="log-log")
plot(s.male, lty=c(1,3), xlab="Time", ylab="Survival Probability")
legend(30, 1.1, c("Female","Male") 
       , lty=c(1,3) )
sma <- print.data.frame(survdiff(Surv(futime, status) ~ male
         , data=shou3, rho=0))
sma2 <- print.data.frame(sma, digits = 2)

> sma2
Call:
survdiff(formula = Surv(futime, status) ~ male, data = shou3, 
    rho = 0)

        N Observed Expected (O-E)^2/E (O-E)^2/V
male=0 10        3     8.57     3.624      4.67
male=1 65       48    42.43     0.732      4.67

 Chisq= 4.7  on 1 degrees of freedom, p= 0.0306 

以下是我尝试做的事情。

<<results=tex, echo=FALSE>>=
latex(print(sma), file='', landscape=TRUE, round=1)
#latex(sma2, file = " ")
#latex(print.data.frame(sma2, cdec = 2, file=''))
#malesd <- survdiff(as.formula(sma$call$formula))
#latex(print(sma2, latex=TRUE, coefs=FALSE, file = " "))
#latex(sma2, file = " ")
 #     , cdec=c(0,0,2,2,2), na.blank=TRUE, booktabs=TRUE, table.env=FALSE, center="none", file="", title="")
@

我似乎无法从对象中获取(OE)^ 2 / E(OE)^ 2 / V元素,而我无法将Chisq线路输出,我希望(我试过cbind / rbind)。我使用的是R Studio,它是一个.rnw文件。如果格式不好,请为此道歉。我反对截止日期和期限对于我在美国可能会问的同事们来说,时间紧迫,所以非常感谢你的帮助,谢谢! -Jen

1 个答案:

答案 0 :(得分:0)

我有两个解决方案。两者都不是很优雅。

以下是一些示例数据。

n <- 1000
set.seed(731)
age <- 50 + 12*rnorm(n)
label(age) <- "Age"
sex <- factor(sample(c('Male','Female'), n,
          rep=TRUE, prob=c(.6, .4)))
cens <- 15*runif(n)
h <- .02*exp(.04*(age-50)+.8*(sex=='Female'))
dt <- -log(runif(n))/h
label(dt) <- 'Follow-up Time'
status <- ifelse(dt <= cens, 1, 0)
futime <- pmin(dt, cens)
# Check it out:
survfitObj <- survfit( Surv(futime, status)~ strata(sex), conf.type="log-log")
plot(survfitObj, lty=c(1,3), xlab="Time", ylab="Survival Probability")
survdiffObj <- survdiff(Surv(futime, status) ~ sex, rho=0)

解决方案1:不要尝试在乳胶中输出结果,只需使用原始输出:

<<results=verbatim, echo=FALSE>>=
survdiffObj
@

解决方案2:手工制作表格#34;

<<>>=
tabl <- data.frame(N = survdiffObj$n,
   Observed = survdiffObj$obs,
   Expected = survdiffObj$exp,
   col5 = (survdiffObj$obs - survdiffObj$exp)^2/survdiffObj$exp,
   col6 = (survdiffObj$obs - survdiffObj$exp)^2/diag(survdiffObj$var))
latex(tabl, file = TRUE)
@

这仍然需要格式化。