こんにちは、すきとほる疫学徒です。
R Tipsでは、私自身の備忘録も兼ねて、おすすめのRパッケージを紹介します。
80%くらいは備忘録が目的なので、殴り書きになりますことをお許しください。
dfSummary
医療大規模データベース解析を行う際、データを開いてまずやるべきことは、「さっそく変数を作り、解析に取りかかること!」ではなく、じっくりとデータを眺め、その全体像を把握しようと努めることですね。
そんな時に役立つデータの要約のためのパッケージがdfSummary。
Rにはデータ要約のパッケージが山ほどあり、シンプルなのは
summary()
table()
などですね。
しかしながら、summary()はご覧のように、返ってくる情報がとっても限定されており、あまり役に立ちません。
> summary(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50
Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
そんな時はこれ、dfSumamry()。
連続変数のみでなく、カテゴリカル変数も含めた全ての変数に対して、
- 変数の型
- カテゴリー別の%
- 連続値の分布
- 欠損の割合
などを一括で出してくれます。
> dfSummary(iris)
Data Frame Summary
iris
Dimensions: 150 x 5
Duplicates: 1
-----------------------------------------------------------------------------------------------------------
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
---- -------------- ----------------------- -------------------- --------------------- ---------- ---------
1 Sepal.Length Mean (sd) : 5.8 (0.8) 35 distinct values . . : : 150 0
[numeric] min < med < max: : : : : (100.0%) (0.0%)
4.3 < 5.8 < 7.9 : : : : :
IQR (CV) : 1.3 (0.1) : : : : :
: : : : : : : :
2 Sepal.Width Mean (sd) : 3.1 (0.4) 23 distinct values : 150 0
[numeric] min < med < max: : (100.0%) (0.0%)
2 < 3 < 4.4 . :
IQR (CV) : 0.5 (0.1) : : : :
. . : : : : : :
3 Petal.Length Mean (sd) : 3.8 (1.8) 43 distinct values : 150 0
[numeric] min < med < max: : . : (100.0%) (0.0%)
1 < 4.3 < 6.9 : : : .
IQR (CV) : 3.5 (0.5) : : : : : .
: : . : : : : : .
4 Petal.Width Mean (sd) : 1.2 (0.8) 22 distinct values : 150 0
[numeric] min < med < max: : (100.0%) (0.0%)
0.1 < 1.3 < 2.5 : . . :
IQR (CV) : 1.5 (0.6) : : : : .
: : : : : . : : :
5 Species 1. setosa 50 (33.3%) IIIIII 150 0
[factor] 2. versicolor 50 (33.3%) IIIIII (100.0%) (0.0%)
3. virginica 50 (33.3%) IIIIII
-----------------------------------------------------------------------------------------------------------
でも、まだちょっと見にくいですよね?
そんな時は、
dfSummary(iris) %>% view()
というように、view()を組み合わせてあげましょう。
すると、こんな感じに見目麗しいグラフが作成されます。
ちなみに、dfSummary()と似たようなパッケージで、Hmiscというものがあります。
こちらのdescribe()関数を使っても、以下のようにdfSummary()と近しい要約データが返ってきます。
ただ、こちらはview()と組み合わせることができず、若干見にくいため、個人的にはdfSummary()が好みです。
> describe(iris)
iris
5 Variables 150 Observations
--------------------------------------------------------------------------------------------------------------------------------------------------------
Sepal.Length
n missing distinct Info Mean Gmd .05 .10 .25 .50 .75 .90 .95
150 0 35 0.998 5.843 0.9462 4.600 4.800 5.100 5.800 6.400 6.900 7.255
lowest : 4.3 4.4 4.5 4.6 4.7, highest: 7.3 7.4 7.6 7.7 7.9
--------------------------------------------------------------------------------------------------------------------------------------------------------
Sepal.Width
n missing distinct Info Mean Gmd .05 .10 .25 .50 .75 .90 .95
150 0 23 0.992 3.057 0.4872 2.345 2.500 2.800 3.000 3.300 3.610 3.800
lowest : 2.0 2.2 2.3 2.4 2.5, highest: 3.9 4.0 4.1 4.2 4.4
--------------------------------------------------------------------------------------------------------------------------------------------------------
Petal.Length
n missing distinct Info Mean Gmd .05 .10 .25 .50 .75 .90 .95
150 0 43 0.998 3.758 1.979 1.30 1.40 1.60 4.35 5.10 5.80 6.10
lowest : 1.0 1.1 1.2 1.3 1.4, highest: 6.3 6.4 6.6 6.7 6.9
--------------------------------------------------------------------------------------------------------------------------------------------------------
Petal.Width
n missing distinct Info Mean Gmd .05 .10 .25 .50 .75 .90 .95
150 0 22 0.99 1.199 0.8676 0.2 0.2 0.3 1.3 1.8 2.2 2.3
lowest : 0.1 0.2 0.3 0.4 0.5, highest: 2.1 2.2 2.3 2.4 2.5
--------------------------------------------------------------------------------------------------------------------------------------------------------
Species
n missing distinct
150 0 3
Value setosa versicolor virginica
Frequency 50 50 50
Proportion 0.333 0.333 0.333
--------------------------------------------------------------------------------------------------------------------------------------------------------
すきとほる疫学徒からのお願い
本ブログは、読者の方が自由に記事の金額を決められるPay What You Want方式を採用しています。
「勉強になった!」、「次も読みたい!」と本ブログに価値を感じてくださった場合は、以下のボタンをクリックし、ご自身が感じた価値に見合うだけの寄付を頂戴できますと幸いです。
もちろん価値を感じなかった方、また学生さんなど金銭的に厳しい状況にある方からのご寄付は不要です。
引き続き情報発信していく活力になりますので、ぜひお気持ちに反しない範囲でご寄付をお願い致します!