159  人口動態統計データの加工1

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>, …

の加工をつづけていきましょう。