gpt4 book ai didi

r - 观星者汇总表中的可变组标题

转载 作者:行者123 更新时间:2023-12-01 03:29:39 25 4
gpt4 key购买 nike

我想自动生成带有变量组标题的描述表 - 使用 knitr 和(理想情况下)stargazer。由于我需要加权描述,我不使用 stargazer 的内置汇总函数,而是生成一个包含统计数据的数据框并使用 summary=FALSE打印数据帧的参数。

问题 1:将变量和标题作为行,汇总统计作为列的 df 不起作用,因为 stargazer 转换了 NA将标题行上的 s 改为 $$ s 中断编织过程。

问题 2:作为解决方法,我生成了一个数据框,其中变量和标题为列,汇总统计为行,并使用 flip=TRUE在观星者输出中翻转行和列的参数。虽然这允许我为变量的标题和数字向量提供空字符向量,但 stargazer 不会在数学模式下输出数字向量,而是(似乎)将它们视为字符。

例子:

# create example df
df <- data.frame(heading=c(" "," "," "),var1=c(1,2,3),var2=c(4,5,6))
df$heading <- as.character(df$heading)

# output using stargazer
stargazer(df, summary = FALSE, flip = TRUE)

% Table created by stargazer v.5.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu
% Date and time: Fri, Aug 12, 2016 - 10:39:01
\begin{table}[!htbp] \centering
\caption{}
\label{}
\begin{tabular}{@{\extracolsep{5pt}} cccc}
\\[-1.8ex]\hline
\hline \\[-1.8ex]
& 1 & 2 & 3 \\
\hline \\[-1.8ex]
heading & & & \\
var1 & 1 & 2 & 3 \\
var2 & 4 & 5 & 6 \\
\hline \\[-1.8ex]
\end{tabular}
\end{table}

问题:如何在描述表中添加标题(空行)并仍然获得变量统计的数学模式输出?

最佳答案

正如 Konrad Rudolph 所提到的, stargazer可能无法做到这一点。以下解决方案使用 xtable反而:

\documentclass{article}
\usepackage{array}

\begin{document}

<<results = "asis", echo = FALSE>>=
library(xtable)

group1 <- data.frame(
name = c("v1", "v2"),
mean = 1:2, min = 3:4, max = 5:6,
stringsAsFactors = FALSE)
group2 <- data.frame(
name = c("v3", "v4"),
mean = -(1:2), min = -(3:4), max = -(5:6),
stringsAsFactors = FALSE)

dat <- rbind(
c("\\textbf{Group 1}", rep(NA, ncol(group1) - 1)),
group1,
c("\\textbf{Group 2}", rep(NA, ncol(group1) - 1)),
group2)

colnames(dat) <- sprintf("\\multicolumn{1}{c}{%s}", colnames(dat))

print.xtable(
xtable(dat,
caption = "Summary of Groups 1 and 2.",
align = c("l", "l", rep(">{$}r<{$}", 3))),
include.rownames = FALSE,
sanitize.text.function = identity,
sanitize.colnames.function = identity)
@
\end{document}

这个概念很简单,但有一些怪癖需要考虑:
  • 首先,我生成样本数据,假设有 2 个组,每个组有 2 个变量,每个变量有 3 个描述。
  • rbind在组中,只需为标题插入行,将空列设置为 NA .在字符串中使用 LaTeX 时不要忘记加倍反斜杠。 (如果标题太宽,请使用 \multicolumn。)
  • 由于第 2 到第 4 列将设置为数学模式,我们必须确保列名将打印为普通文本。 “width-1-multicolumn”允许仅更改一个单元格的列类型,请参阅 here .
  • 使用 align xtable 的论据指定列类型。在数学模式下,我们需要一个正常的左对齐列和三个右对齐的列。要强制数学模式,请使用 >{$}r<{$} ,见 here . (还有一个额外的 l 将被忽略——它用于我们隐藏的行名称。)
  • 由于我们在数据中有 LaTeX 标记,我们需要关闭 xtable 的 sanitizer。因此,设置 sanitize.text.functionsanitize.colnames.functionidentity .

  • 结果:

    Result

    关于r - 观星者汇总表中的可变组标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38920692/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com