LaTeX、R 和 Sweave 中的多面板表格

LaTeX、R 和 Sweave 中的多面板表格

我想知道用于生成带有“面板”的表格的公认的 Sweave/R/LaTeX 解决方案是什么:多个部分(可能包含或不包含相同的列)组合成一个表格。面板的宽度应相等,即使它们具有不同的列,也不必调整大小以使字体看起来不同。我希望这适用于任何数据框组合,而不仅仅是模型结果(如上所述这里)。例如,现在,我正在努力将跨多个数据框的自定义描述统计表合并起来。

可以使用一个表环境中的多个表subfig(如上所述)这里)。如果您不需要表格彼此对齐或被一个大边框包围(据我所知),此解决方案效果很好。它也不允许使用threeparttable,这使得可以修改标题和添加脚注(或者,至少,threeparttable似乎不愿意接受像 xtable 生成的多个表格环境)。

我检查了该Hmisc软件包,特别是latex命令,但它们似乎大多只接受一个对象。此外,这似乎是一个应该主要在 LaTeX 中解决的问题,因为它涉及表格格式多于数据操作。

这似乎是一个简单而常见的问题,但我似乎无法在网上找到答案。每个人都讨论使用threeparttablesubfig解决自定义表格外观和包含多个表格的单独问题,但没有讨论组合问题。在 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)版本。此外,Xtabularxbooktabs包裹为了改善表格布局而被加载。

\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}

相关内容