括号中的标准偏差:Latex R

Standard Deviation in parenthesis: Latex R

我想要数据框括号中的标准偏差。由于我使用的是 Latex,因此我希望输出类似于:meanValue (sdValue).

我拥有的数据框包含我感兴趣的每个变量的均值和标准差值列。

例如,您如何将标准差放在括号中?

iris %>% group_by(Species) %>% summarize(MeanPetal = mean(Petal.Length), sdPetal = sd(Petal.Length))

计算 sdPetal 时使用一些格式化函数。例如,


library(tidyverse)
iris %>% group_by(Species) %>% summarize(MeanPetal = mean(Petal.Length), 
                                         sdPetal = sprintf("(%.2f)", sd(Petal.Length)))
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 3 x 3
#>   Species    MeanPetal sdPetal
#>   <fct>          <dbl> <chr>  
#> 1 setosa          1.46 (0.17) 
#> 2 versicolor      4.26 (0.47) 
#> 3 virginica       5.55 (0.55)

reprex package (v0.3.0)

于 2020-11-28 创建

如果你想在 LaTeX 中使用它,只需通过 knitr::kable:


library(tidyverse)
library(knitr)
iris %>% 
    group_by(Species) %>% 
    summarize(MeanPetal = mean(Petal.Length), 
              sdPetal = sprintf("(%.2f)", sd(Petal.Length)),
              .groups = "keep") %>%
    kable(format = "latex") %>% cat
#> 
#> \begin{tabular}{l|r|l}
#> \hline
#> Species & MeanPetal & sdPetal\
#> \hline
#> setosa & 1.462 & (0.17)\
#> \hline
#> versicolor & 4.260 & (0.47)\
#> \hline
#> virginica & 5.552 & (0.55)\
#> \hline
#> \end{tabular}

reprex package (v0.3.0)

于 2020-11-28 创建

(您可能需要也可能不需要最后的 cat,具体取决于 您正在使用此代码。我需要它,因为我正在使用 reprex::reprex 生成 Markdown 代码。)

如果你可以接受一个 +- 符号来显示 LaTeX 中的标准偏差,那么有一个包 qwraps2 具有函数 mean_sd(),它计算并转换平均值和标准偏离乳胶友好的输出格式。输出可以通过包 xtable 导出到 LaTeX。

这是一个示例代码: (为了好玩,我添加了 Sepal.Length 的统计数据)

library(tidyverse)
library(xtable)
library(qwraps2)

df <- iris %>% 
  group_by(Species) %>% 
  summarize(across(c(Petal.Length,Sepal.Length), mean_sd, digits = 3))
df

生成:

`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 3 x 3
  Species    Petal.Length         Sepal.Length        
  <fct>      <chr>                <chr>               
1 setosa     "1.462 $\pm$ 0.174" "5.006 $\pm$ 0.352"
2 versicolor "4.260 $\pm$ 0.470" "5.936 $\pm$ 0.516"
3 virginica  "5.552 $\pm$ 0.552" "6.588 $\pm$ 0.636"

使用 xtable.

导出到 LaTeX
df %>% 
  xtable() %>% 
  print.xtable(type = "latex", 
               sanitize.text.function = function(x){x})

导致 LaTeX 代码:

% latex table generated in R 3.6.0 by xtable 1.8-4 package
% Mon Jan 11 20:06:07 2021
\begin{table}[ht]
\centering
\begin{tabular}{rlll}
  \hline
 & Species & Petal.Length & Sepal.Length \ 
  \hline
1 & setosa & 1.462 $\pm$ 0.174 & 5.006 $\pm$ 0.352 \ 
  2 & versicolor & 4.260 $\pm$ 0.470 & 5.936 $\pm$ 0.516 \ 
  3 & virginica & 5.552 $\pm$ 0.552 & 6.588 $\pm$ 0.636 \ 
   \hline
\end{tabular}
\end{table}

编辑----------------

mean_sd()

里面居然有设置括号的方法
df <- iris %>% 
  group_by(Species) %>% 
  summarize(across(c(Petal.Length,Sepal.Length), mean_sd, digits = 3, denote_sd = "paren"))
df

控制台输出:

`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 3 x 3
  Species    Petal.Length  Sepal.Length 
  <fct>      <chr>         <chr>        
1 setosa     1.462 (0.174) 5.006 (0.352)
2 versicolor 4.260 (0.470) 5.936 (0.516)
3 virginica  5.552 (0.552) 6.588 (0.636)