我使用 R 中的 stargazer 模块制作了下表(我对其进行了一些修改)。我希望将那个非常长的 IV 交互项(0.300)的标准误差与左列文本的第二行放在同一行,这样表格中就不会出现目前存在的空白。
另外,在相关说明中,stargazer 包有这种奇怪的符号来创建其表格,我将其替换为特定的列宽。我指的是这个,我已将其添加为注释:{@{\extracolsep{5pt}}lD{.}{.}{-3} }
这是什么意思?
据我搜索,我遇到了以下问题:如何对齐表格中的两列但它们没有介绍如何在表格中间执行此操作。
\begin{tabular}{p{7cm}p{2cm}} %{@{\extracolsep{5pt}}lD{.}{.}{-3} }
\\[-1.8ex]\hline
\hline \\[-5ex]
& \multicolumn{1}{c}{\textit{Dependent variable:}} \\
\cline{2-2}
\\[-4.5ex] & \multicolumn{1}{c}{Some DV} \\
\hline \\[-5ex]
Some IV & \multicolumn{1}{c}{0.1} \\
& \multicolumn{1}{c}{(0.1)} \\
Some really long IV for an interaction with*another really long IV & \multicolumn{1}{c}{$50^{***}$} \\
& \multicolumn{1}{c}{(0.300)} \\
Constant & \multicolumn{1}{c}{$50^{***}$} \\
& \multicolumn{1}{c}{(10.3)} \\
\hline \\[-5ex]
Observations & \multicolumn{1}{c}{1000} \\
R$^{2}$ & \multicolumn{1}{c}{0.121} \\
\hline
\hline \\[-1.8ex]
\textit{Note:} & \multicolumn{1}{r}{$^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01} \\
\end{tabular}
答案1
要简单地移动(0.300)
到同一行,with*...
您可以使用 makecell 包,如以下示例所示。
\documentclass{article}
\usepackage{makecell}
\begin{document}
\begin{tabular}{p{7cm}c}
\\
\hline
\hline
& \textit{Dependent variable:} \\
\cline{2-2}
& Some DV \\
\hline
Some IV & 0.1 \\
& (0.1) \\
Some really long IV for an interaction with*another really long IV & \makecell[t]{$50^{***}$ \\(0.300)} \\
Constant & $50^{***}$ \\
& (10.3)\\
\hline
Observations & 1000 \\
R$^{2}$ & 0.121 \\
\hline
\hline
\textit{Note:} & \multicolumn{1}{r}{$^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01} \\
\end{tabular}
\end{document}
请注意,我已经删除了所有不必要的\multicolumn{1}
命令(以及 [-5ex]...)并更改了第二列的列说明符。
为了使表格中水平线与文本之间的距离更具视觉吸引力,您还可以考虑使用booktabs
包及其规则,如下例所示。请注意,我还更改了行,Note
以便第二列不会太宽。
\documentclass{article}
\usepackage{makecell}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{p{7cm}c}
\toprule
& \textit{Dependent variable:} \\
\cmidrule{2-2}
& Some DV \\
\midrule
Some IV & 0.1 \\
& (0.1) \\
Some really long IV for an interaction with*another really long IV & \makecell[t]{$50^{***}$ \\(0.300)} \\
Constant & $50^{***}$ \\
& (10.3)\\
\midrule
Observations & 1000 \\
R$^{2}$ & 0.121 \\
\bottomrule
\multicolumn{2}{l}{\textit{Note:} \hfill $^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01}
\end{tabular}
\end{document}
最后,您还可以考虑将值和其错误放在同一行中。在我看来,这样可以更清楚地了解它们属于左列中的哪个条目。作为副作用,您将节省一些垂直空间。
答案2
一些改进和简化:我将头行后的前六行按对分组,系统地使用makecell
,在组之间添加一些垂直间距并修剪\cmidrule
。我还使用了threeparttable
包进行注释:
\documentclass{article}
\usepackage{makecell}
\usepackage{booktabs}
\usepackage{threeparttable, xspace}
\begin{document}
\begin{threeparttable}
\begin{tabular}{lc}
\toprule
& \textit{Dependent variable:} \\
\cmidrule(lr){2-2}
& Some DV \\
\midrule
Some IV & \makecell[t]{0.1\\(0.1)} \\
\addlinespace
\makecell[l]{Some really long IV for an interaction \\ with\tnote{*}\, another really long IV} & \makecell{50\tnote{***} \\(0.300)} \\
\addlinespace
Constant & \makecell[t]{50\tnote{***}\\ (10.3)} \\
\midrule
Observations & 1000 \\
R$^{2}$ & 0.121 \\
\bottomrule
\end{tabular}
\begin{tablenotes}[para]
\textit{Note: }
\item[*] $p < 0.1$;
\item[** ] $p < 0.05$;
\item[***] $p < 0.01$.
\end{tablenotes}
\end{threeparttable}
\end{document}