
Ich bin ein echter Neuling in der Verwendung von LaTex und hätte gerne Hilfe bei booktabs
der Formatierung dieser Tabelle. Ich verwende das Paket R
und würde es idealerweise mit diesem generieren xtables
. Mit der Sache mit der Spaltenüberspannung komme ich jedoch nicht klar.
Deshalb habe ich versucht, \multicolumn
den Befehl manuell einzufügen.
Hier ist der Code:
\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{@{\extracolsep{4pt}}llccccccc}
\toprule
{} & {} & {Observations} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cline{3-3}
\cline{4-6}
\cline{7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\hline
\multirow{2}{*}{2012}
& Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
\multirow{2}{*}{2016}
& Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\hline
\end{tabular}
\caption{Mean by Year and Group}
\end{table}
\end{document}
Ich finde jedoch, dass diese Tabelle nicht wirklich gut formatiert ist und nicht den booktabs
Standards entspricht, oder? Wie erstelle ich manuell eine Tabelle mit demselben Design, aber besser formatiert?
Danke
Antwort1
Das Hauptproblem mit der Tabelle besteht darin, dass Sie nicht die booktabs
Regeln verwenden, sondern eine Mischung aus Standardtabellenregeln ( \hline
und \cline
) und booktabs
Regeln ( \toprule
).
Wenn Sie diese Regeln durch die booktabs
Versionen ( \midrule
, \cmidrule
und \bottomrule
) ersetzen, erhalten Sie die gewünschte schöne Formatierung.
Ich habe das multirow
Zeug entfernt. Das fügt Ihrer Tabelle nichts hinzu; es ist völlig klar, das Jahr einfach in die erste Zeile der Zeilenpaare für dieses Jahr zu setzen. Generell würde ich die Verwendung von multirow
überhaupt vermeiden. Es hat seine Verwendung, aber normalerweise für Dinge wie Formulare mit eingerahmten Zellen. Für Standardforschungstabellen ist es fast nie angemessen.
PS: Ich hoffe, die Daten sind erfunden! Deine Ns sind wirklich klein... :)
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{@{\extracolsep{4pt}}llccccccc}
\toprule
{} & {} & {Observations} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cmidrule{3-3}
\cmidrule{4-6}
\cmidrule{7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\midrule
2012 & Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
2016 & Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\bottomrule
\end{tabular}
\caption{Mean by Year and Group}
\end{table}
\end{document}
Einige Anmerkungen zum Satz numerischer Daten
Die Verwendung des c
Spaltentyps ist nicht wirklich die beste Lösung, wenn Sie numerische Daten setzen. Normalerweise möchten wir, dass numerische Daten auf irgendeine Weise ausgerichtet sind, sodass die Zahlen bei unterschiedlichen Größen richtig ausgerichtet sind.
Bei Dezimaldaten ist eine Ausrichtung am Dezimalpunkt normal. Bei anderen Daten reicht eine einfache Ausrichtung nach rechts aus.
Zur Ausrichtung am Dezimalpunkt können Sie das siunitx
Paket oder das dcolumn
Paket verwenden. siunitx
verfügt über viele tolle Funktionen zum automatischen Formatieren numerischer Daten, einschließlich der Zifferngruppierung für große Zahlen. Es bietet auch Möglichkeiten zum korrekten Setzen von SI-Einheiten. Das dcolumn
Paket ist speziell für die Ausrichtung am Dezimalpunkt konzipiert. Hier ist ein Beispiel, das Ihnen die Unterschiede zeigt.
\documentclass{article}
\usepackage{booktabs}
\usepackage{dcolumn}
\usepackage{siunitx}
% Shorthand for multicolumn
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
\begin{document}
\begin{tabular}{ccrD{.}{.}{2.3}S}
\toprule
Center & Center & \mc{right} & \mc{D-column} & \mc{S-column} \\
\midrule
1 & 32.6 & 1 & 32.6 & 32.6 \\
10 & 335.434 & 10 & 335.434 & 335.434 \\
100 & 0.99 & 100 & 0.99 & 0.99 \\
5 & 1 & 5 & 1 & 1 \\
\bottomrule
\end{tabular}
\end{document}
Antwort2
Zuerst sollten alle Ihre Regeln mit erstellt werden booktabs
, da es Ihren Tabellenregeln etwas Polsterung hinzufügt (Tabellenzeilen sind in grundlegendem Latex oft viel zu eng).
Zweitens sollten TabellenüberschriftenüberTabellen, da sich Tabellen über mehrere Seiten erstrecken können und Leser nicht umblättern müssen sollten, um zu wissen, worum es in der Tabelle geht. Dafür ist die Überschrift nützlich. Basic-Latex vergisst, die Werte von und package
zu vertauschen, wenn die Überschrift über der Tabelle steht.\abovecaptionskip
\belowdisplayskip
Drittens würde ich es Observations
durch eine Abkürzung ersetzen, da ich eine Spalte mit einstelligen Zahlen und einem so breiten Spaltenkopf hässlich finde.
Viertens würde ich für die beiden Dreiergruppen am Ende der Tabelle einen kleineren Spaltenabstand festlegen. Auch der (lr)
Parameter für `\cmidrules ist hier nützlich, um das allgemeine Erscheinungsbild der Tabelle zu verbessern.
\documentclass{article}
\usepackage{array, multirow, caption, booktabs}
\begin{document}
\begin{table}[ht]
\centering\setlength\extrarowheight{2pt}
\caption{Mean by Year and Group}
\begin{tabular}{@{\extracolsep{4pt}}llc*{2}{c@{\enspace}c@{\enspace}c}}
\toprule
{} & {} & {Obsv\textsuperscript{ns}} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cmidrule(lr){3-3}
\cmidrule{4-6}
\cmidrule(lr){7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\midrule
\multirow{2}{*}{2012}
& Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
\addlinespace
\multirow{2}{*}{2016}
& Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Notiz: Wenn Sie „Beobachtungen“ nicht abkürzen möchten, sollten Sie eine Neuorganisation der Tabelle durch Vertauschen von Zeilen und Spalten in Erwägung ziehen.