【问题标题】:make nice simple t-test (difference in means) table that can be exported to latex in R制作可以导出到 R 中的乳胶的漂亮简单 t 检验(均值差异)表
【发布时间】:2022-10-02 10:16:48
【问题描述】:

使用through library(broom)等方法的最大问题

library(dplyr)
library(broom)

output <- iris %>% 
  group_by(Species) %>% 
  summarise(tidy(t.test(Sepal.Width)))

是它产生了一个 tibble,它本质上是一个美化的数据框。我不想要数据框,但更喜欢汇总统计表。我发现的一种方法是将其转换为常规数据框,然后添加行名,然后使用 xtable 将其导出到乳胶。据我所知,没有好的代码可用,而且我认为这样做效率低下。

另一种方法是使用https://www.datanovia.com/en/blog/how-to-perform-t-test-for-multiple-variables-in-r-pairwise-group-comparisons/,但同样,我们最终会得到一个不适合将其导出到乳胶的小标题,因为无论如何我基本上都必须重新格式化所有标签。

还有其他建议吗?

    标签: r broom rstatix


    【解决方案1】:

    我会将此放在评论中,但我还没有这种能力。

    你签出library(kableExtra)了吗?

    https://bookdown.org/yihui/rmarkdown-cookbook/kableextra.html

    有一些样式函数可以在一行代码中重新格式化整个表格的表示。

    【讨论】:

      【解决方案2】:

      flextable 包允许您轻松地将表格嵌入到 Latex 文件中。由于您要比较三组,因此您确实应该应用 Tukey 的 HSD 之类的校正,因为无论如何这将更像是 ANOVA 比较。我已经包含了代码,但是如果您设置了 t-test 方法,您可以为此目的使用相同的flextable 编码。首先,您可以获得一个非常简单的表格,如下所示:

      #### Tukey HSD Version ####
      tukey.output <- iris %>% 
        rstatix::tukey_hsd(Sepal.Width ~ Species)
      
      tukey.output %>% 
        flextable()
      

      但是您会注意到,对于这种特定情况,它看起来相当草率,因为 p 值有很多小数,而且名称有点废话:

      我们可以通过添加大量代码来美化它。请记住,我在某些名称中添加了一些空格,因为flextable 会尝试将表格尽可能地适应页面的有限宽度,因此有时可以将内容平滑在一起。

      tukey.output %>% 
        select(-term,
               -null.value) %>% 
        rename(`Species 1` = group1,
               `Species 2` = group2,
               `Estimate` = estimate,
               `CI Lower` = conf.low,
               `CI Upper ` = conf.high,
               ` P Value` = p.adj,
               `P Sig?` = p.adj.signif) %>% 
        mutate(`Species 1` = c("Setosa",
                               "Setosa",
                               "Versicolor"),
               `Species 2` = c("Versicolor",
                               "Virginica",
                               "Virginica"),
               `CI Lower` = round(`CI Lower`,3),
               `CI Upper ` = round(`CI Upper `,3),
               ` P Value` = c(" < 0.00",
                             " < 0.00",
                             " < 0.00")) %>% 
        flextable() %>% 
        add_header_lines(values = "Tukey HSD Table for Iris Dataset")
      

      这给了你这个:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-31
        • 2015-10-24
        相关资源
        最近更新 更多