我正在创建一堆基本状态报告,我发现乏味的一件事是向我的所有表添加总行。我目前正在使用 Tidyverse 方法,这是我当前代码的示例。我正在寻找的是默认包含几个不同级别的选项。
#load into RStudio viewer (not required)
iris = iris
#summary at the group level
summary_grouped = iris %>%
group_by(Species) %>%
summarize(mean_s_length = mean(Sepal.Length),
max_s_width = max(Sepal.Width))
#summary at the overall level
summary_overall = iris %>%
summarize(mean_s_length = mean(Sepal.Length),
max_s_width = max(Sepal.Width)) %>%
mutate(Species = "Overall")
#append results for report
summary_table = rbind(summary_grouped, summary_overall)
多次这样做是非常乏味的。我有点想要:
summary_overall = iris %>%
group_by(Species, total = TRUE) %>%
summarize(mean_s_length = mean(Sepal.Length),
max_s_width = max(Sepal.Width))
仅供参考 - 如果您熟悉 SAS,我正在寻找通过 proc 中的类、方式或类型语句提供的相同类型的功能,这意味着让我可以控制汇总级别并在一次调用中获得多个级别。
任何帮助表示赞赏。我知道我可以创建自己的函数,但希望有一些已经存在的东西。我也更愿意坚持 tidyverse 的编程风格,尽管我还没有这样做。
另一种选择:
library(tidyverse)
iris %>%
mutate_at("Species", as.character) %>%
list(group_by(.,Species), .) %>%
map(~summarize(.,mean_s_length = mean(Sepal.Length),
max_s_width = max(Sepal.Width))) %>%
bind_rows() %>%
replace_na(list(Species="Overall"))
#> # A tibble: 4 x 3
#> Species mean_s_length max_s_width
#> <chr> <dbl> <dbl>
#> 1 setosa 5.01 4.4
#> 2 versicolor 5.94 3.4
#> 3 virginica 6.59 3.8
#> 4 Overall 5.84 4.4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)