名前:niszet*
Rおじさん歴:3年目?
趣味:R、楽器(?)、そろそろ自作HWをですね…
Blog URL: https://niszet.hatenablog.com/
普段は回路設計などしています
技術書典5にniszet工房として出ます…
Rradio.12
とりあえずdata.frameが手に入ったとして(その前に色々やる)、
プロットする前にデータ全体を俯瞰(概観)出来れば便利
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## 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
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
NA(欠測) の存在に気づけない(メッセージ等なく表示されてしまう)
結果の使い回しが出来ない(data.frameではない)
# [1] NA
# [1] 37
# [1] 42.12931
# [1] "Mean : 42.13 "
summary()
の強力版。各変数ごとに、
を見れる。表示項目のカスタマイズもできる。
type | variable | missing | complete | n | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|---|---|
numeric | am | 0 | 32 | 32 | 0.41 | 0.5 | 0 | 0 | 0 | 1 | 1 | ▇▁▁▁▁▁▁▆ |
numeric | carb | 0 | 32 | 32 | 2.81 | 1.62 | 1 | 2 | 2 | 4 | 8 | ▆▇▂▇▁▁▁▁ |
numeric | cyl | 0 | 32 | 32 | 6.19 | 1.79 | 4 | 4 | 6 | 8 | 8 | ▆▁▁▃▁▁▁▇ |
numeric | disp | 0 | 32 | 32 | 230.72 | 123.94 | 71.1 | 120.83 | 196.3 | 326 | 472 | ▇▆▁▂▅▃▁▂ |
numeric | drat | 0 | 32 | 32 | 3.6 | 0.53 | 2.76 | 3.08 | 3.7 | 3.92 | 4.93 | ▃▇▁▅▇▂▁▁ |
numeric | gear | 0 | 32 | 32 | 3.69 | 0.74 | 3 | 3 | 4 | 4 | 5 | ▇▁▁▆▁▁▁▂ |
numeric | hp | 0 | 32 | 32 | 146.69 | 68.56 | 52 | 96.5 | 123 | 180 | 335 | ▃▇▃▅▂▃▁▁ |
numeric | mpg | 0 | 32 | 32 | 20.09 | 6.03 | 10.4 | 15.43 | 19.2 | 22.8 | 33.9 | ▃▇▇▇▃▂▂▂ |
numeric | qsec | 0 | 32 | 32 | 17.85 | 1.79 | 14.5 | 16.89 | 17.71 | 18.9 | 22.9 | ▃▂▇▆▃▃▁▁ |
numeric | vs | 0 | 32 | 32 | 0.44 | 0.5 | 0 | 0 | 0 | 1 | 1 | ▇▁▁▁▁▁▁▆ |
numeric | wt | 0 | 32 | 32 | 3.22 | 0.98 | 1.51 | 2.58 | 3.33 | 3.61 | 5.42 | ▃▃▃▇▆▁▁▂ |
skimr::skim()
してもヒストグラムが表示できない。# <U+2582><U+2587><U+2585><U+2587><U+2586><U+2585><U+2582><U+2582>
knitr::kable()
で表示すれば文字化けしない。
skim_to_wide()
は見たままの形のdata.frameで出力するx |
---|
▂▇▅▇▆▅▂▂ |
skimr::fix_windows_histograms()
という関数があるが、Localeを変えてしまう&対話的な使用が前提なのでお勧めしない。## # A tibble: 3 x 6
## variable type stat level value formatted
## <chr> <chr> <chr> <chr> <dbl> <chr>
## 1 Sepal.Length numeric missing .all 0 0
## 2 Sepal.Length numeric complete .all 150 150
## 3 Sepal.Length numeric n .all 150 150
long形式のtibbleをskimr:::print.skim_df()
で整形して表示してる。
そのため、%>%
で次の関数に渡すこともできる。
skimr()
の結果を表示しつつ次に渡すならskim_tee()
を使う。
## $factor
## # A tibble: 1 x 7
## variable missing complete n n_unique top_counts ordered
## * <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 Species 0 150 150 3 set: 50, ver: 50, vir:~ FALSE
## # A tibble: 3 x 16
## type variable missing complete n n_unique top_counts ordered mean
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 fact~ Species 0 150 150 3 set: 50, ~ FALSE <NA>
## 2 nume~ Petal.L~ 0 150 150 <NA> <NA> <NA> 3.76
## 3 nume~ Petal.W~ 0 150 150 <NA> <NA> <NA> "1.2~
## # ... with 7 more variables: sd <chr>, p0 <chr>, p25 <chr>, p50 <chr>,
## # p75 <chr>, p100 <chr>, hist <chr>
skimr::skim()
は表示のカスタマイズ性が高い。
詳しくはvignettesやhelpを読むべし。
skim_with()
で型ごとにどの関数を使用するか設定を更新する。
# numericにsum()をsumという列名追加。既存の関数は消える
skim_with(numeric=list(sum=sum), append=FALSE)
# 存在しない項目はNAになる
knitr::kable(skim_to_wide(head(iris[-4], n=3)))
type | variable | missing | complete | n | n_unique | top_counts | ordered | sum |
---|---|---|---|---|---|---|---|---|
factor | Species | 0 | 3 | 3 | 1 | set: 3, ver: 0, vir: 0, NA: 0 | FALSE | NA |
numeric | Petal.Length | NA | NA | NA | NA | NA | NA | 4.1 |
numeric | Sepal.Length | NA | NA | NA | NA | NA | NA | 14.7 |
numeric | Sepal.Width | NA | NA | NA | NA | NA | NA | 9.7 |
skim_format_defaults()
でデフォルト設定に戻することが出来るget_skimmers()
で型ごとに設定された関数をlistで得られる
skim_format()
で表示桁数などをカスタマイズできる。show_formats()
で設定されているフォーマットの確認が出来る。skim_format_defaults()
で元に戻せるtype | variable | sum |
---|---|---|
numeric | Petal.Length | 563.7 |
numeric | Petal.Width | 179.9 |
numeric | Sepal.Length | 876.5 |
numeric | Sepal.Width | 458.6 |
dfSummary()
でskimr::skim()
と同様に強力なsummary()
を使える。view()
するとViewerペインを使って見やすく表示できる
View()
ではないので注意。view(dfSummary(iris[,c(1,5)], graph.magnif=3,
varnumbers =FALSE, omit.headings=TRUE),
method="render", footnote = NA, report.title=NA)
Variable | Stats / Values | Freqs (% of Valid) | Graph | Valid | Missing |
---|---|---|---|---|---|
Sepal.Length [numeric] | mean (sd) : 5.84 (0.83) min < med < max : 4.3 < 5.8 < 7.9 IQR (CV) : 1.3 (0.14) | 35 distinct val. | 150 (100%) | 0 (0%) | |
Species [factor] | 1. setosa 2. versicolor 3. virginica | 50 (33.3%) 50 (33.3%) 50 (33.3%) | 150 (100%) | 0 (0%) |
NA
の数もわかる。強力なsummary()
としてどちらも有用。
Enjoy!!