我正在使用带有R标记的xtable和with来生成我用\input{}调用的.tex文件。虽然效果很好,但我还没有弄明白如何创建像这里这样的多颜色元素。有人知道怎么做吗?
到目前为止我使用的是:
tbl <- xtable(data, align="l r r r r r")
colnames(tbl) <- c("Variable",
"Mean", "Std Dev",
"Mean", "Std Dev",
"Difference")
caption(tbl) <- c("Table Title")
print(tbl,
include.rownames=FALSE,
caption.placement="top",
booktabs=TRUE,
type="latex",
file="output.tex")我希望在每个“平均”和“性病发展”(“治疗”和“控制”)上有一个不同的分组头。
或者,是否有更好的方法来使用R/ better来自动生成表?我不想手动编辑表,因为报表需要自动生成。
更新: @agstudy:我对latex很陌生,但我认为这是我希望用xtable (或类似于xtable)自动生成的输出:
\begin{tabular}{lrrrrr}
\toprule
& \multicolumn{2}{c}{Treatment} & \multicolumn{2}{c}{Control} & \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5}
Variable & Mean & Std Dev & Mean & Std Dev & Difference \\
\midrule
var1 & 1 & 2 & 3 & 4 & 5 \\
\bottomrule
\end{tabular}更新2: @乔纳森:我读了几本书才明白你的意思。我接受了你的建议,结果成功了。
在我现在使用的R标记块中:
tbl <- xtable(data)
print(tbl,
only.contents=TRUE,
include.rownames=FALSE,
type="latex",
digits(tbl) <- c(0,1,1,1,1,1),
file="output/tblout.tex")然后在课文中,我用:
\begin{tabular}{lddddd}
\toprule
& \multicolumn{2}{c}{Treatment} & \multicolumn{2}{c}{Control} & \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5}
Variable & \multicolumn{1}{r}{Mean} & \multicolumn{1}{r}{Std Dev} & \multicolumn{1}{r}{Mean} & \multicolumn{1}{r}{Std Dev} & \multicolumn{1}{r}{Difference} \\
\midrule
\input{../output/tblout}
\bottomrule
\end{tabular}我将看看是否有人对原生xtable (或其他包)解决方案有任何其他建议。否则,我会接受你的回答。谢谢!
发布于 2012-12-21 06:03:50
假设表的形式在运行期间是相同的(即只有数字正在改变),我的建议是使用only.contents参数对print.xtable进行print.xtable并手工编写多列标题。据我所知,xtable本身无法完成多列单元格。
发布于 2015-02-09 22:32:25
我认为xtable中的add.to.row选项完美地实现了这一点。
这里的示例代码:
require(xtable)
age <- sample(c('30-50', '50-70', '70+'), 200, replace=T)
sex <- sample(c('Male', 'Female'), 200, replace=T)
val <- table(age, sex)
val <- rbind(val, formatC(prop.table(val)*100, format='f', digits=1))
val <- structure(val, dim=c(3, 4))
val <- rbind(c('n', '%'), val)
rownames(val) <- c('', sort(unique(age)))
val <- xtable(val)
addtorow <- list()
addtorow$pos <- list(0)
addtorow$command <- paste0(paste0('& \\multicolumn{2}{c}{', sort(unique(sex)), '}', collapse=''), '\\\\')
print(val, add.to.row=addtorow, include.colnames=F)发布于 2012-12-25 05:30:38
考虑使用表格包。
https://stackoverflow.com/questions/13984470
复制相似问题