library(tidyverse)ここからは、data/mc360000.csvファイルのデータを加工していきます。
セクション5で解説した関数以外も少し登場します。
このデータは、
https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00450011&tstat=000001028897&cycle=7&year=20190&month=0&tclass1=000001053058&tclass2=000001053061&tclass3=000001053065&stat_infid=000031982775&result_back=1&tclass4val=0
政府統計の総合窓口、
自殺による死因(三桁基本分類)別にみた性・年次別死亡数及び百分率
をダウンロードしたそのままのものです。
一切エクセル等でデータの加工をすることなく、RのみでTidyにしていきましょう!
まずはインポート!
の前にデータを眺めましょう。
RStudioでCSVファイルを開くと中身をテキストファイルとして見れます。
まず、普通にひらくと文字化けしているので、File Reopenwith Encodingでshift-jisを選びましょうそうすると、最初の3行は注意書きになっており、これをインポートしてしまうとまずいです。
ということで、文字コードはshift-jisで、最初の3行を飛ばしてインポートしましょう。また、列名はあってないようなものなので、列名はつけない設定にしましょう
dat <- read_csv(
file = "data/mc360000.csv",
locale=locale(encoding="shift-jis"),
skip = 3,
col_names = FALSE
)Rows: 29 Columns: 61
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (61): X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, ...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(dat)X2列に総数が一番上にきていて、これは、ファイルの4行目の総数と一致しており、狙った行からインポートできています。
ここで、ちょっと補足なのですが、skipの値はcol_namesで列名をTRUEとした場合とFALSEとした場合で同じ値を指定していても違う結果になります。
例として、
use_shiftjis <- locale(encoding="shift-jis")
read_csv("data/skip.csv", locale=use_shiftjis)Rows: 11 Columns: 1
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (1): 行1
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# A tibble: 11 × 1
行1
<chr>
1 行2
2 行3
3 行4
4 行5
5 行6
6 行7
7 行8
8 行9
9 行10
10 行11
11 行12
read_csv("data/skip.csv", locale=use_shiftjis, skip=3)Rows: 8 Columns: 1
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (1): 行4
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# A tibble: 8 × 1
行4
<chr>
1 行5
2 行6
3 行7
4 行8
5 行9
6 行10
7 行11
8 行12
read_csv("data/skip.csv", locale=use_shiftjis, skip=3, col_name=FALSE)Rows: 9 Columns: 1
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (1): X1
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# A tibble: 9 × 1
X1
<chr>
1 行4
2 行5
3 行6
4 行7
5 行8
6 行9
7 行10
8 行11
9 行12
行1 | 行2 | skip=3 で行1から3までが飛ばされる 行3 | 行4 <- col_name=TRUEだとここが列名に 行5 <- データはここからはじまる。 行6
行1 | 行2 | skip=3 で行1から3までが飛ばされる 行3 | 行4 <- col_name=FALSEだとデータはここからはじまる 行5
行6
こんな感じです。
さて、次の動画では、
dat# A tibble: 29 × 61
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 <NA> 総数 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
2 <NA> 死亡… <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> 百分… <NA>
3 <NA> 1995 2000 2005 2010 2014 2015 2016 2017 2018 2019 1995 2000
4 X60-… 21420 30251 30553 29554 24417 23152 21021 20468 20031 19425 100 100
5 X60… 8 10 7 8 7 6 5 4 4 10 0 0
6 X61… 235 359 375 307 240 200 191 148 170 162 1.1 1.2
7 X62… - 1 3 - 2 1 2 2 1 - - 0
8 X63… 1 1 3 - 2 3 - - - - 0 0
9 X64… 111 164 197 187 158 176 165 162 161 151 0.5 0.5
10 X65… 1 4 5 4 10 3 6 3 4 3 0 0
# ℹ 19 more rows
# ℹ 48 more variables: X14 <chr>, X15 <chr>, X16 <chr>, X17 <chr>, X18 <chr>,
# X19 <chr>, X20 <chr>, X21 <chr>, X22 <chr>, X23 <chr>, X24 <chr>,
# X25 <chr>, X26 <chr>, X27 <chr>, X28 <chr>, X29 <chr>, X30 <chr>,
# X31 <chr>, X32 <chr>, X33 <chr>, X34 <chr>, X35 <chr>, X36 <chr>,
# X37 <chr>, X38 <chr>, X39 <chr>, X40 <chr>, X41 <chr>, X42 <chr>,
# X43 <chr>, X44 <chr>, X45 <chr>, X46 <chr>, X47 <chr>, X48 <chr>, …
の加工をつづけていきましょう。