我想知道用于生成带有“面板”的表格的公认的 Sweave/R/LaTeX 解决方案是什么:多个部分(可能包含或不包含相同的列)组合成一个表格。面板的宽度应相等,即使它们具有不同的列,也不必调整大小以使字体看起来不同。我希望这适用于任何数据框组合,而不仅仅是模型结果(如上所述这里)。例如,现在,我正在努力将跨多个数据框的自定义描述统计表合并起来。
可以使用一个表环境中的多个表subfig
(如上所述)这里)。如果您不需要表格彼此对齐或被一个大边框包围(据我所知),此解决方案效果很好。它也不允许使用threeparttable
,这使得可以修改标题和添加脚注(或者,至少,threeparttable
似乎不愿意接受像 xtable 生成的多个表格环境)。
我检查了该Hmisc
软件包,特别是latex
命令,但它们似乎大多只接受一个对象。此外,这似乎是一个应该主要在 LaTeX 中解决的问题,因为它涉及表格格式多于数据操作。
这似乎是一个简单而常见的问题,但我似乎无法在网上找到答案。每个人都讨论使用threeparttable
和subfig
解决自定义表格外观和包含多个表格的单独问题,但没有讨论组合问题。在 Google 上搜索 LaTeX 或 R 中的“面板”没有找到我想要的信息:大多数结果都讨论面板数据或具有多个面板的图表。也许还有另一个术语正在使用?
无论如何,我已经为此努力了一段时间,如果能得到任何建议我都会很感激。
编辑:Alan 要求我提供一个我正在寻找的示例。我正在寻找的表格之一如下:显示描述性统计数据和相关性的组合表。
表 X:变量的描述性统计数据和相关性 ------------------------------------------------------------------------------------------ 面板 A:描述性统计 平均值 中位数 标准差 IQR 第 25 百分位数 第 75 百分位数 变量 1 变量 2 ... ---------------------------------------------------------------------------------------- 面板 B:相关性 变种1 变量2 变量3 变量4 变量5 变量6 变量7 变量 1 变量 2 变量 3 变量 4 变量 5 变量 6 变量 7 ----------------------------------------------------------------------------------------- [1] 脚注 1:变量 1 的计算方式为…… [2] 相关性采用 Pearson 方法。
我的 R 代码只会生成这两个数据框:目前,我实际上是将xtable
这些预制框 Sweave 到外部 .tex 文件中,然后使用 将它们拉入\subfloat
。
请注意,这两个表格的大小和列数不同,但宽度相同。我经常看到这些类型的表格,其中包含许多不同的面板组合,所以我知道在 LaTeX 中一定有一种简单的方法可以做到这一点。
希望这能有所帮助。如果我可以提供更多信息,请告诉我。如有必要,我可以提供 R 和 Sweave 代码,但这似乎会让人更加困惑,而不是有所帮助。
答案1
这是一个可能的解决方案,通过tabularx
包裹。它提供了一个环境tabularx
,该环境接受一个参数来指定 的宽度tabularx
。这允许将两个面板排版为两个单独的表格,但仍在两个表格中保持相同的宽度。为了将其拉伸到整个文本宽度,我使用了\linewidth
。一种新的列类型被定义为提供的可拉伸列类型的Y
右对齐(\raggedleft
)版本。此外,X
tabularx
booktabs
包裹为了改善表格布局而被加载。
\documentclass{article}
\usepackage[margin=2cm]{geometry}% http://ctan.org/pkg/geometry
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\usepackage{booktabs}% http://ctan.org/pkg/booktabs
\newcolumntype{Y}{>{\raggedleft\arraybackslash}X}% raggedleft column X
\begin{document}
\begin{table}[htb]
\caption{Descriptive Statistics and Correlations for Variables}
\label{tbl:stats-and-correlations}
\begin{tabularx}{\linewidth}{l*{6}{Y}}
\toprule
\multicolumn{7}{l}{\textbf{Panel A: Descriptive Statistics}} \\
\midrule
& Mean & Median & St.\ Dev. & IQR & 25$^{\textrm{th}}$ & 75$^{\textrm{th}}$ \\[0pt]
& & & & & Percentile & Percentile \\
Variable 1 & 12.3 & 45.6 & 7.89 & 5 & 12.0 & 0.22 \\
Variable 2 & 8.3 & 1.0 & 0.01 & 12 & 99.9 & 10.0 \\
\ldots & & & & & &
\end{tabularx}
\begin{tabularx}{\linewidth}{l*{7}{Y}}
\toprule
\multicolumn{7}{l}{\textbf{Panel B: Correlations}} \\
\midrule
& Var.\ 1 & Var.\ 2 & Var.\ 3 & Var.\ 4 & Var.\ 5 & Var.\ 6 & Var.\ 7 \\
Variable~1 & 0.78 & 0.37 & 0.48 & 0.10 & 0.13 & 0.58 & 0.41 \\
Variable~2 & 0.46 & 0.86 & 0.96 & 0.44 & 0.15 & 0.56 & 0.31 \\
Variable~3 & 0.03 & 0.75 & 0.11 & 0.44 & 0.71 & 0.06 & 0.26 \\
Variable~4 & 0.21 & 0.25 & 0.38 & 0.88 & 0.24 & 0.52 & 0.46 \\
Variable~5 & 0.20 & 0.93 & 0.54 & 0.96 & 0.55 & 0.82 & 0.62 \\
Variable~6 & 0.67 & 0.85 & 0.74 & 0.99 & 0.27 & 0.48 & 0.85 \\
Variable~7 & 0.82 & 0.89 & 0.68 & 0.06 & 0.02 & 0.30 & 0.10 \\
\bottomrule
\end{tabularx}
[1]\ Footnote 1: Variable~1 is calculated as\ldots \endgraf
[2]\ Correlations are Pearson.
\end{table}
\end{document}
可以对列对齐、间距和排版进行微小的调整。
答案2
此 tabularx 表格内可以有分页符。此包ltablex.sty
可从以下位置获取:
http://www.ctan.org/tex-archive/macros/latex/contrib/ltablex
\documentclass{article}
\usepackage[margin=2cm,paperheight=12cm]{geometry}%% only demo
\usepackage{ltablex,booktabs,ragged2e,caption}
\renewcommand\tabularxcolumn[1]{>{\RaggedLeft}p{#1}}
\begin{document}
\begin{center}
\captionof{table}{Descriptive Statistics and Correlations for Variables}\label{tbl:stats-and-correlations}
\keepXColumns
\begin{tabularx}{\textwidth}{@{} l*6X @{}}\toprule
\multicolumn{7}{@{}l}{\textbf{Panel A: Descriptive Statistics}} \\\midrule
& Mean & Median & St.~Dev. & IQR & 25\textsuperscript{th} & 75\textsuperscript{th}\\[0pt]
& & & & & Percentile & Percentile \\
Variable 1 & 12.3 & 45.6 & 7.89 & 5 & 12.0 & 0.22 \\
Variable 2 & 8.3 & 1.0 & 0.01 & 12 & 99.9 & 10.0 \\
\ldots & & & & & &
\end{tabularx}
\par\noindent
\begin{tabularx}{\linewidth}{@{} l*7X @{}}\toprule
\multicolumn{7}{l}{\textbf{Panel B: Correlations}} \\\midrule
& Var.~1 & Var.~2 & Var.~3 & Var.~4 & Var.~5 & Var.~6 & Var.~7 \\
Variable~1 & 0.78 & 0.37 & 0.48 & 0.10 & 0.13 & 0.58 & 0.41 \\
Variable~2 & 0.46 & 0.86 & 0.96 & 0.44 & 0.15 & 0.56 & 0.31 \\
Variable~3 & 0.03 & 0.75 & 0.11 & 0.44 & 0.71 & 0.06 & 0.26 \\
Variable~4 & 0.21 & 0.25 & 0.38 & 0.88 & 0.24 & 0.52 & 0.46 \\
Variable~5 & 0.20 & 0.93 & 0.54 & 0.96 & 0.55 & 0.82 & 0.62 \\
Variable~6 & 0.67 & 0.85 & 0.74 & 0.99 & 0.27 & 0.48 & 0.85 \\
Variable~7 & 0.82 & 0.89 & 0.68 & 0.06 & 0.02 & 0.30 & 0.10 \\
\bottomrule
\end{tabularx}
\RaggedRight\medskip
[1]\ Footnote 1: Variable~1 is calculated as\ldots \par
[2]\ Correlations are Pearson.
\end{center}
\end{document}