繁体   English   中英

使用两个分组因子在 R 中创建汇总表的方法

[英]way to create summary table in R with two grouping factors

我正在尝试根据以下数据在 R 中创建一个包含两个分组因素的汇总表

   species        plot   type  `mean(C)`
   <fct>        <fct> <fct>     <dbl>
 1 CA          MI  A         -35.7
 2 CA          MI  B         -35.6
 3 CA          MI  C         -35.9
 4 FO          MI  A         -35.7
 5 FO          MI  B         -34.9
 6 FO          MI  C         -35.3
 7 HE          MI  A         -35.4
 8 HE          MI  B         -35.6
 9 HE          MI  C         -35.6
10 LA          MI  A         -36.5

mean(C) 是我要显示的响应变量,我希望根据类型和物种对其进行拆分; 即类型作为列和物种作为行

我尝试使用的每个软件包(xtable、stargazer、gtsummary)似乎都没有能力做到这一点。 当然,我可以自己插电,但很高兴知道是否有包裹。 有人有想法么?

非常感谢

这是使用 tidyr:: 包的一种解决方案。

library(tidyr)
# define your data as dataframe df
df <- data.frame("species" = c("CA","CA","CA","FO","FO", "FO", "HE", "HE", "HE", "LA"),
                         "plot" = c("MI"),
                         "type" = c("A", "B", "C", "A", "B", "C", "A", "B", "C", "A"),
                         "mean" = c(-35.7, -35.6, -35.9, -35.7, -34.9, -35.3, -35.4, -35.6, -35.6, -36.5))
# pivot df around 'type', using 'mean'   
df %>%
  pivot_wider(names_from = type, values_from = mean)

这将返回:

> df %>%
+   pivot_wider(names_from = type, values_from = mean)
# A tibble: 4 x 5
species plot      A     B     C   
<fct>   <fct> <dbl> <dbl> <dbl> 
1 CA      MI    -35.7 -35.6 -35.9 
2 FO      MI    -35.7 -34.9 -35.3 
3 HE      MI    -35.4 -35.6 -35.6 
4 LA      MI    -36.5  NA    NA

如果您只想要将类型变量值作为列呈现的数据框,那么您只是在 tidyverse 中寻找spread函数。

library(tidyr)

df <- data.frame(species = c("CA", "CA", "CA", "FO", "FO", "FO", "HE", "HE", "HE", "LA"),
                 plot = "MI", 
                 type = c("A", "B", "C", "A", "B", "C", "A", "B", "C", "A"),
                 mean_C = c(-35.7,-35.6,-35.9, -35.7,-34.9,-35.3, -35.4,-35.6, -35.6,-36.5))


new_df <- df %>%
  spread(type, mean_C)

print(new_df)

您可以在 {gtsummary} 中使用tbl_strata()添加任意数量的分层变量。 下面的例子!

library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.5.0'

tbl <-
  trial %>%
  mutate(grade = paste("Grade", grade)) %>%
  tbl_strata(
    strata = grade,
    ~ .x %>%
      tbl_summary(
        by = trt, 
        include = c(age, response),
        missing = "no"
      )
  )

在此处输入图片说明 reprex 包(v2.0.1) 于 2022 年 1 月 7 日创建

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM