見出し画像

Rによるグループ別 基本統計量の出し方 (2)

先日、投稿した「基本統計量の出し方」noteについて、twitterで他のやり方もあるよ!って教えてもらったので、それぞれ実行してみました!

元投稿は下記。

その5:stby()関数(summarytoolsパッケージ)使用

データポエマーさん(@bob3bob3)から教えていただいたコードです。
この関数は知らなかった!

実行してみました!
グループ名表示もサクッと出て、出したい項目も自分で設定できる。
素敵です・・・!

> library(summarytools)
> stby(data = iris,
+      INDICES = iris$Species,
+      FUN = descr,
+      stats = c("mean", "sd", "min", "Q1", "med", "Q3", "max"),
+      transpose = TRUE)
Non-numerical variable(s) ignored: Species
Descriptive Statistics  
iris  
Group: Species = setosa  
N: 50  

                    Mean   Std.Dev    Min     Q1   Median     Q3    Max
------------------ ------ --------- ------ ------ -------- ------ ------
     Petal.Length   1.46      0.17   1.00   1.40     1.50   1.60   1.90
      Petal.Width   0.25      0.11   0.10   0.20     0.20   0.30   0.60
     Sepal.Length   5.01      0.35   4.30   4.80     5.00   5.20   5.80
      Sepal.Width   3.43      0.38   2.30   3.20     3.40   3.70   4.40

Group: Species = versicolor  
N: 50  

                    Mean   Std.Dev    Min     Q1   Median     Q3    Max
------------------ ------ --------- ------ ------ -------- ------ ------
     Petal.Length   4.26      0.47   3.00   4.00     4.35   4.60   5.10
      Petal.Width   1.33      0.20   1.00   1.20     1.30   1.50   1.80
     Sepal.Length   5.94      0.52   4.90   5.60     5.90   6.30   7.00
      Sepal.Width   2.77      0.31   2.00   2.50     2.80   3.00   3.40

Group: Species = virginica  
N: 50  

                    Mean   Std.Dev    Min     Q1   Median     Q3    Max
------------------ ------ --------- ------ ------ -------- ------ ------
     Petal.Length   5.55      0.55   4.50   5.10     5.55   5.90   6.90
      Petal.Width   2.03      0.27   1.40   1.80     2.00   2.30   2.50
     Sepal.Length   6.59      0.64   4.90   6.20     6.50   6.90   7.90
      Sepal.Width   2.97      0.32   2.20   2.80     3.00   3.20   3.80

その6:summarise_each()関数 Revise!

しぶてぃさん(@takuizum)から教えていただいたコードです。
前回、列名が広がりすぎて見づらくなってたsummarise_each() が、ものすごくすっきりしました!

実行結果がこちら。
コンパクトな表にまとまりました…!

> iris %>%select(Species, Sepal.Width, Petal.Width) %>% 
+   gather(key = type, value = width, -Species) %>%  
+   group_by(Species, type) %>% 
+   summarise_each(list(N = length, min = min, max = max, med = median, sd = sd))
# A tibble: 6 x 7
# Groups:   Species [3]
 Species    type            N   min   max   med    sd
 <fct>      <chr>       <int> <dbl> <dbl> <dbl> <dbl>
1 setosa     Petal.Width    50   0.1   0.6   0.2 0.105
2 setosa     Sepal.Width    50   2.3   4.4   3.4 0.379
3 versicolor Petal.Width    50   1     1.8   1.3 0.198
4 versicolor Sepal.Width    50   2     3.4   2.8 0.314
5 virginica  Petal.Width    50   1.4   2.5   2   0.275
6 virginica  Sepal.Width    50   2.2   3.8   3   0.322


この記事が気に入ったらサポートをしてみませんか?