我正在使用R Markdown和knitr中的xtable来生成.tex文件,然后通过\input{}调用它们。效果不错,但我还没有想出如何创建多列表格,就像这里显示的那样。有人知道该如何实现吗?
到目前为止,我正在使用:
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")
我希望在每个“Mean”和“Std Dev”(“Treatment”和“Control”)上有不同的分组标题。
或者,是否有更好的方法使用R Markdown/knitr自动生成表格?我不想手动编辑表格,因为报告需要自动生成。
更新:@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:@Jonathan:我读了几遍才明白你在建议什么。我采纳了你的建议,它起作用了。
现在在R markdown块中,我使用以下内容:
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(或其他包)有什么建议。否则,我将接受您的答案。谢谢!