簡體   English   中英

如何在R中添加總計以及group_by統計信息

[英]How to add totals as well as group_by statistics in R

當計算使用任何統計summarisegroup_by我們只能得到每類的匯總統計,而不是所有的人口(總)的值。 如何獲得兩者?

我正在尋找干凈整潔的東西。 到目前為止,我只能想到:

bind_rows( 
  iris %>% group_by(Species) %>% summarise(
    "Mean" = mean(Sepal.Width), 
    "Median" = median(Sepal.Width), 
    "sd" = sd(Sepal.Width), 
    "p10" = quantile(Sepal.Width, probs = 0.1))
  , 
  iris %>% summarise(
    "Mean" = mean(Sepal.Width), 
    "Median" = median(Sepal.Width), 
    "sd" = sd(Sepal.Width), 
    "p10" = quantile(Sepal.Width, probs = 0.1)) %>% 
  mutate(Species = "Total")
  )

但是我想要更緊湊的東西。 特別是,我不想鍵入兩次代碼(用於摘要),每個組一次,總計一次。

如果解開要嘗試的操作,則可以簡化它:您擁有包含多種物種的iris數據,並且希望將其與所有物種的數據一起匯總。 綁定之前,無需計算這些摘要統計信息。 而是將iris與設置為Species = "Total"iris版本綁定,然后進行分組和匯總。

library(tidyverse)

bind_rows(
  iris,
  iris %>% mutate(Species = "Total")
) %>%
  group_by(Species) %>%
  summarise(Mean = mean(Sepal.Width),
            Median = median(Sepal.Width),
            sd = sd(Sepal.Width),
            p10 = quantile(Sepal.Width, probs = 0.1))
#> # A tibble: 4 x 5
#>   Species     Mean Median    sd   p10
#>   <chr>      <dbl>  <dbl> <dbl> <dbl>
#> 1 setosa      3.43    3.4 0.379  3   
#> 2 Total       3.06    3   0.436  2.5 
#> 3 versicolor  2.77    2.8 0.314  2.3 
#> 4 virginica   2.97    3   0.322  2.59

我喜歡上面的評論中的注意事項,盡管我必須進行足夠的這種計算才能在個人軟件包中使用類似的速記功能。 對於諸如標准偏差之類的事情來說,這可能沒有什么意義,但是我需要做很多事來增加人口統計總數等。(如果有用,該函數在此處 )。

有點短,盡管與bind_rows非常相似

    q10 <- function(x){quantile(x , probs=0.1)}

    iris %>% 
      select(Species,Sepal.Width)%>%
      group_by(Species) %>% 
      summarise_all(c("mean", "sd", "q10")) %>% 
      t() %>% 

      cbind(c("total", iris %>% select(Sepal.Width) %>% summarise_all(c("mean", "sd", "q10")))) %>% 
      t()

可能更干凈:

  bind_rows( 
    iris %>% 
      group_by(Species) %>%  
      select(Sepal.Width)%>%
      summarise_all(c("mean", "sd", "q10"))
    , 
    iris %>% 
      select(Sepal.Width)%>%
      summarise_all(c("mean", "sd", "q10")) %>% 
      mutate(Species = "Total")
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM