このWEBサイトに設置したリンクは,新しいタブ・ウィンドウで開くことを推奨します.
バグの影響で,新しいタブ・ウィンドウでないと開けないリンクが多いためです.
予めご容赦ください.
このページでは,その無茶振り,(Rで)GISが解決します:フローデータ分析編で用いるデータの前処理方法を解説します.加えて,estatapiパッケージを用いて,e-Stat(政府統計の総合窓口)から政府統計データをダウンロードし,それらを分析に用いることができる形に加工する方法も詳解します.
e-Stat上のデータは,e-Stat
APIというサービスを通じ,RやPython等のソフトウェア上でのコマンド操作を用いて,直接ダウンロードすることができます.一方,APIの扱いには若干の専門知識が必要となるので,初心者が用いるにはハードルが高いです.estatapiは,そうした専門知識がなくても,APIを用いたデータのダウンロードを可能にするパッケージです.
e-Stat
APIを使う際には,ユーザ登録の上,APIキー(appId)を取得する必要があります.これは,estatapiを用いる場合も同様です.ユーザ登録及びAPIキーの取得については,こちらのスライドを参照してください.スライドのパスワードは,「r_de_geonw」です.
GISデータ等の基本的な扱い方等の前提知識については,その無茶振り,(Rで)GISが解決しますの方で詳しく解説していますので,そちらもあわせて参照してください.
今回の演習では,以下のパッケージを用います.未インストールのものについては,適宜インストールを行ってください.インストールの過程で「Do you want to install from sources the packages which need compilation? (Yes/no/cancel)」というメッセージが表示された場合には,とりあえず「no」を選択することをお勧めします.
library(tidyverse)
library(openxlsx)
library(magrittr)
library(estatapi)
library(sf)
#sfパッケージ使用時のおまじない
sf::sf_use_s2(FALSE)
library(geojsonio)
動作環境によっては,sfパッケージの読み込み時にエラーが出る場合があります.その原因は,sfパッケージが依存しているRcppのバージョンが古いことが多いようです.もしエラーが出る場合には,以下のコードを実行して見てください(筆者のPCではエラーが出なかったので,コメント化してあります).
# install.packages("Rcpp")
# library(Rcpp)
APIキーを,オブジェクトappIdに格納します.「XXXXXXXXX」というIDは架空のものですので,e-Stat APIから各自発行したキーを,実際には用いてください.
appId <- "XXXXXXXXX"
estatapiのestat_getStatsList関数を用いて,学校基本調査に該当する統計表の一覧を取得します.統計表の検索方法はいくつかありますが,今回は,政府統計コードを用いた検索を行います.政府統計コードの一覧はこちらのページにあります.学校基本統計調査のコードは「00400001」と書いてありますので,引数statsCodeに,こちらを指定します.引数appIdには先程入力したappIdを,searchWordはブランクを指定してください.
tbl_info_school <- estatapi::estat_getStatsList(appId=appId,
statsCode="00400001",
searchWord="")
head(tbl_info_school)
## # A tibble: 6 × 26
## `@id` STAT_…¹ GOV_ORG STATI…² TITLE CYCLE SURVE…³ OPEN_…⁴ SMALL…⁵ COLLE…⁶
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 0003061540 学校基… 文部科… 学校基… 総括 - 0 2007-1… 0 該当な…
## 2 0003015869 学校基… 文部科… 学校基… 都道… - 0 2007-1… 0 該当な…
## 3 0003061522 学校基… 文部科… 学校基… 種類… - 200604… 2006-1… 0 該当な…
## 4 0003061523 学校基… 文部科… 学校基… 外国… - 200604… 2006-1… 0 該当な…
## 5 0003061524 学校基… 文部科… 学校基… 理由… - 200604… 2006-1… 0 該当な…
## 6 0003061525 学校基… 文部科… 学校基… 帰国… - 200604… 2006-1… 0 該当な…
## # … with 16 more variables: MAIN_CATEGORY <chr>, SUB_CATEGORY <chr>,
## # OVERALL_TOTAL_NUMBER <chr>, UPDATED_DATE <chr>, TABULATION_CATEGORY <chr>,
## # TABULATION_SUB_CATEGORY1 <chr>, TABULATION_SUB_CATEGORY2 <chr>,
## # TABULATION_SUB_CATEGORY3 <chr>, TABULATION_SUB_CATEGORY4 <chr>,
## # DESCRIPTION <chr>, TABLE_NAME <chr>, TABULATION_SUB_CATEGORY5 <chr>,
## # TABLE_SUB_CATEGORY1 <chr>, TABLE_SUB_CATEGORY2 <chr>,
## # TABLE_SUB_CATEGORY3 <chr>, TABLE_CATEGORY <chr>, and abbreviated variable …
今回は例として,2010年の県外進学データを取得します.項目STATISTICS_NAMEに「平成22年」「大学・大学院」,TITLEに「出身高校の所在地県別 入学者数」を含むデータがその候補になりますので,統計表情報からそちらを抽出します.
tbl_info_school_mig_2010 <- tbl_info_school %>%
dplyr::filter(grepl("平成22年",STATISTICS_NAME)&
grepl("大学・大学院",STATISTICS_NAME)&
grepl("出身高校の所在地県別 入学者数",TITLE))
tbl_info_school_mig_2010
## # A tibble: 1 × 26
## `@id` STAT_…¹ GOV_ORG STATI…² TITLE CYCLE SURVE…³ OPEN_…⁴ SMALL…⁵ COLLE…⁶
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 0003023902 学校基… 文部科… 学校基… 出身… - 0 2010-1… 0 該当な…
## # … with 16 more variables: MAIN_CATEGORY <chr>, SUB_CATEGORY <chr>,
## # OVERALL_TOTAL_NUMBER <chr>, UPDATED_DATE <chr>, TABULATION_CATEGORY <chr>,
## # TABULATION_SUB_CATEGORY1 <chr>, TABULATION_SUB_CATEGORY2 <chr>,
## # TABULATION_SUB_CATEGORY3 <chr>, TABULATION_SUB_CATEGORY4 <chr>,
## # DESCRIPTION <chr>, TABLE_NAME <chr>, TABULATION_SUB_CATEGORY5 <chr>,
## # TABLE_SUB_CATEGORY1 <chr>, TABLE_SUB_CATEGORY2 <chr>,
## # TABLE_SUB_CATEGORY3 <chr>, TABLE_CATEGORY <chr>, and abbreviated variable …
得られた統計表番号@idに該当する統計表を,estatapiのestat_getStatsData関数を用いてダウンロードします.引数statsDataIdに,統計表番号を指定します.
mig_2010 <- estatapi::estat_getStatsData(appId=appId,
statsDataId=tbl_info_school_mig_2010$`@id`)
head(mig_2010)
## # A tibble: 6 × 13
## cat01_code 設置者別9 cat02_c…¹ 都道…² cat03_…³ 所在…⁴ cat04…⁵ 所在…⁶ area_…⁷
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 010 計 010 計 010 大学の… 010 出身高… 00000
## 2 010 計 010 計 010 大学の… 010 出身高… 01000
## 3 010 計 010 計 010 大学の… 010 出身高… 02000
## 4 010 計 010 計 010 大学の… 010 出身高… 03000
## 5 010 計 010 計 010 大学の… 010 出身高… 04000
## 6 010 計 010 計 010 大学の… 010 出身高… 05000
## # … with 4 more variables: 都道府県別1 <chr>, unit <chr>, value <dbl>,
## # annotation <chr>, and abbreviated variable names ¹cat02_code, ²都道府県別2,
## # ³cat03_code, ⁴所在地別1, ⁵cat04_code, ⁶所在地別2, ⁷area_code
「XX_1」となっている方が大学の所在地に関する変数,「XX_2」は出身高校の所在地に関する変数です.即ち,「XX_1」は着地側,「XX_2」は発地側の位置情報です.変数valueが,都道府県ペア間の県外進学数です.変数「設置者別9」には,大学の設置者及び性別を区別する変数です.都道府県コードに対応する変数は,大学の所在地についてのみ把握できます.
出身高校の所在地の変数「都道府県別2」について,その値を確認すると,「都道府県」が抜けていることがわかります.
unique(mig_2010$都道府県別2)
## [1] "計" "北海道" "青森" "岩手" "宮城" "秋田" "山形" "福島"
## [9] "茨城" "栃木" "群馬" "埼玉" "千葉" "東京" "神奈川" "新潟"
## [17] "富山" "石川" "福井" "山梨" "長野" "岐阜" "静岡" "愛知"
## [25] "三重" "滋賀" "京都" "大阪" "兵庫" "奈良" "和歌山" "鳥取"
## [33] "島根" "岡山" "広島" "山口" "徳島" "香川" "愛媛" "高知"
## [41] "福岡" "佐賀" "長崎" "熊本" "大分" "宮崎" "鹿児島" "沖縄"
## [49] "その他"
このままでは分析上扱いにくいので,変数「都道府県別2」に「都道府県」を補ったものを,新たな変数origin_nameとして追加します.
mig_2010_long <- mig_2010 %>%
dplyr::mutate(origin_name=case_when(
#「京都」「大阪」なら「府」を補う
都道府県別2%in%c("京都","大阪") ~ paste0(都道府県別2,"府"),
#「東京」なら「都」を補う
都道府県別2=="東京" ~ "東京都",
#「北海道」「その他」「計」なら何も補わない
都道府県別2%in%c("北海道","その他","計") ~ 都道府県別2,
#上に該当しなければ「県」を補う
TRUE ~ paste0(都道府県別2,"県")
))
着地側の変数「都道府県1」は特に何かを補う必要もなさそうなので,変数名をdestination_nameに変更し,そのままにしておきます.また,変数「設置者別9」を「founder」に変えた上で,発着地名が「その他」「計」「全国」に該当しないレコードのみ残します.
mig_2010_long <- mig_2010_long %>%
#着地側の変数の名前を変更
dplyr::rename(destination_name=都道府県別1) %>%
#設置者を示す変数の名前を変更
dplyr::rename(founder=設置者別9) %>%
#必要な変数のみ残す
dplyr::select(founder,origin_name,destination_name,value) %>%
#発着地名が「その他」「計」「全国」に該当しないレコードのみ残す
dplyr::filter(!(origin_name%in%c("その他","計","全国")|
destination_name%in%c("その他","計","全国")))
head(mig_2010_long)
## # A tibble: 6 × 4
## founder origin_name destination_name value
## <chr> <chr> <chr> <dbl>
## 1 計 北海道 北海道 14906
## 2 計 北海道 青森県 379
## 3 計 北海道 岩手県 82
## 4 計 北海道 宮城県 135
## 5 計 北海道 秋田県 49
## 6 計 北海道 山形県 74
元データから,都道府県名と都道府県コードの対応表を作ります.都道府県名は変数「都道府県別1」をそのまま用いることができますが,都道府県コードは変数area_codeの先頭2文字を取り出す必要があります.それら変数を作成した上で,都道府県名・都道府県コードの2変数についてデータをユニークにします.
pref_code <- mig_2010 %>%
#必要な変数のみ残す
dplyr::select(都道府県別1,area_code) %>%
#都道府県名pref_nameの値は,都道府県別1の値そのまま
dplyr::mutate(pref_name=都道府県別1,
#都道府県コードpref_codeの値はarea_codeの先頭2文字
pref_code=substr(x=area_code,start=1,stop=2)) %>%
#都道府県名・コードでユニーク化
dplyr::distinct(pref_name,pref_code)
都道府県名をキーに,発地・着地側に都道府県コードを結合します.
mig_2010_long <- mig_2010_long %>%
#発地側に都道府県コードを結合
dplyr::left_join(y=pref_code,by=c("origin_name"="pref_name")) %>%
#都道府県コードの変数名を変更
dplyr::rename(origin=pref_code) %>%
#着地側に都道府県コードを結合
dplyr::left_join(y=pref_code,by=c("destination_name"="pref_name")) %>%
#都道府県コードの変数名を変更
dplyr::rename(destination=pref_code)
最後に,現状縦に並んでいる設立者・性別毎のデータを,横並びに変形します.前者はlong型,後者はwide型とも呼びます.変数founderを基準に,データをwide型へ変換する際は,tidyrのpivot_wider関数を用いて以下のように実行します.Wide型に変換しない変数を引数id_colsで,新たに作られる変数の名前に変数founderの値を用いることを引数names_fromで,wide型に変形される観測値は変数valueから来ることを引数values_fromで明示します.
mig_2010_wide <- mig_2010_long %>%
#Wide型に変換しない変数の指定
tidyr::pivot_wider(id_cols=c(origin_name,destination_name,origin,destination),
#新たな変数名の元になる値が入った変数
names_from=founder,
#Wide型に変換される観測値が入った変数
values_from=value)
head(mig_2010_wide)
## # A tibble: 6 × 8
## origin_name destination_name origin destination 計 国立 私立 計のうち男
## <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 北海道 北海道 01 01 14906 3612 10499 9225
## 2 北海道 青森県 01 02 379 308 24 246
## 3 北海道 岩手県 01 03 82 52 26 49
## 4 北海道 宮城県 01 04 135 66 65 96
## 5 北海道 秋田県 01 05 49 29 3 31
## 6 北海道 山形県 01 06 74 46 27 36
変数名が日本語のままだと扱いづらいので,英語で変数名を付け直します.また,進学者総数から男子の進学者数を差し引いたものを,女子の進学者数として変数に追加します.
mig_2010_wide <- mig_2010_wide %>%
#変数名を付け直す
dplyr::rename(total=計,
national=国立,
private=私立,
male=計のうち男) %>%
#女子の進学者数を計算
dplyr::mutate(female=total-male)
openxlsxのwrite.xlsx関数を用いて,集計された進学者数をxlsx形式で書き出します.
openxlsx::write.xlsx(x=mig_2010_wide,
file="output/mig_2010.xlsx")
上で作成したデータは,発着地ペアについてフロー量が縦に並んでいる形式です.一方,よく見るOD表は,行方向に発地側の地名,列方向に着地側の地名が並んだ正方行列の形のものだと思います.以下では,発着地ペアのデータをOD表の形式に変形する方法を示します.
例として,進学者総数についてOD表を作成します.表の行方向には発地側都道府県名,列方向には着地側都道府県名が並ぶ形にします.この変形には
,上と同様pivot_wider関数が使えます.引数id_colsには行方向のラベルとなる発地側都道府県名origin_name,引数names_fromには変数名となる着地側都道府県名destination_name,引数values_fromには並べ替えられる進学者総数totalを指定します.
mig_2010_total_od <- mig_2010_wide %>%
#データをOD表の形式に変形
tidyr::pivot_wider(id_cols=c(origin_name),
names_from=destination_name,
values_from=total)
head(mig_2010_total_od)
## # A tibble: 6 × 48
## origin…¹ 北海道 青森県 岩手県 宮城県 秋田県 山形県 福島県 茨城県 栃木県 群馬県
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 北海道 14906 379 82 135 49 74 38 93 30 86
## 2 青森県 408 2003 261 548 87 87 82 84 68 61
## 3 岩手県 236 289 1357 750 158 111 123 69 87 137
## 4 宮城県 141 82 314 6414 124 491 262 91 105 91
## 5 秋田県 158 210 225 536 935 106 103 68 81 71
## 6 山形県 115 41 74 941 59 937 192 83 75 93
## # … with 37 more variables: 埼玉県 <dbl>, 千葉県 <dbl>, 東京都 <dbl>,
## # 神奈川県 <dbl>, 新潟県 <dbl>, 富山県 <dbl>, 石川県 <dbl>, 福井県 <dbl>,
## # 山梨県 <dbl>, 長野県 <dbl>, 岐阜県 <dbl>, 静岡県 <dbl>, 愛知県 <dbl>,
## # 三重県 <dbl>, 滋賀県 <dbl>, 京都府 <dbl>, 大阪府 <dbl>, 兵庫県 <dbl>,
## # 奈良県 <dbl>, 和歌山県 <dbl>, 鳥取県 <dbl>, 島根県 <dbl>, 岡山県 <dbl>,
## # 広島県 <dbl>, 山口県 <dbl>, 徳島県 <dbl>, 香川県 <dbl>, 愛媛県 <dbl>,
## # 高知県 <dbl>, 福岡県 <dbl>, 佐賀県 <dbl>, 長崎県 <dbl>, 熊本県 <dbl>, …
openxlsxのwrite.xlsx関数を用いて,OD表をxlsx形式で書き出します.
openxlsx::write.xlsx(x=mig_2010_total_od,
file="output/mig_2010_total_od.xlsx")
今回重力モデルの説明変数として用いるデータは,社会・人口統計体系(統計でみる都道府県・市区町村のすがた)から取得します.社会・人口統計体系は,各地域の様々な社会・経済属性のうち基礎的なものを,都道府県・市区町村単位で集計したデータで,卒業論文等での利用頻度が高いもののひとつです.社会・人口統計体系は,社会・経済変数の生の値をまとめた基礎データと,それら変数を組み合わせて計算される各種指標をまとめた社会生活統計指標に分類されます.
まずは,社会・人口統計体系を政府統計コードの一覧から探します.コードは「00200502」ですので,学校基本調査の場合と同じく,estat_getStatsListを用いて統計表のリストを取得します.
#社会・人口統計体系の統計表の一覧
tbl_info_si <- estatapi::estat_getStatsList(appId=appId,
statsCode="00200502",
searchWord="")
head(tbl_info_si)
## # A tibble: 6 × 19
## `@id` STAT_…¹ GOV_ORG STATI…² TITLE CYCLE SURVE…³ OPEN_…⁴ SMALL…⁵ COLLE…⁶
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 0000010101 社会・… 総務省 都道府… A … 年度… 0 2022-0… 0 全国
## 2 0000010101 社会・… 総務省 都道府… A … 年度… 0 2022-0… 0 都道府…
## 3 0000010102 社会・… 総務省 都道府… B … 年度… 0 2022-0… 0 都道府…
## 4 0000010102 社会・… 総務省 都道府… B … 年度… 0 2022-0… 0 全国
## 5 0000010103 社会・… 総務省 都道府… C … 年度… 0 2022-0… 0 全国
## 6 0000010103 社会・… 総務省 都道府… C … 年度… 0 2022-0… 0 都道府…
## # … with 9 more variables: MAIN_CATEGORY <chr>, SUB_CATEGORY <chr>,
## # OVERALL_TOTAL_NUMBER <chr>, UPDATED_DATE <chr>, TABULATION_CATEGORY <chr>,
## # TABULATION_SUB_CATEGORY1 <chr>, TABULATION_CATEGORY_EXPLANATION <chr>,
## # TABLE_NAME <chr>, TABULATION_SUB_CATEGORY_EXPLANATION1 <chr>, and
## # abbreviated variable names ¹STAT_NAME, ²STATISTICS_NAME, ³SURVEY_DATE,
## # ⁴OPEN_DATE, ⁵SMALL_AREA, ⁶COLLECT_AREA
統計表のリストを,都道府県データ(項目COLLECT_AREAが「都道府県」を含む)のみに絞ります.
tbl_info_si_pref <- tbl_info_si %>%
#項目COLLECT_AREAが「都道府県」を含むレコードに絞る
dplyr::filter(grepl("都道府県",COLLECT_AREA))
head(tbl_info_si_pref)
## # A tibble: 6 × 19
## `@id` STAT_…¹ GOV_ORG STATI…² TITLE CYCLE SURVE…³ OPEN_…⁴ SMALL…⁵ COLLE…⁶
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 0000010101 社会・… 総務省 都道府… A … 年度… 0 2022-0… 0 都道府…
## 2 0000010102 社会・… 総務省 都道府… B … 年度… 0 2022-0… 0 都道府…
## 3 0000010103 社会・… 総務省 都道府… C … 年度… 0 2022-0… 0 都道府…
## 4 0000010104 社会・… 総務省 都道府… D … 年度… 0 2022-0… 0 都道府…
## 5 0000010105 社会・… 総務省 都道府… E … 年度… 0 2022-0… 0 都道府…
## 6 0000010106 社会・… 総務省 都道府… F … 年度… 0 2022-0… 0 都道府…
## # … with 9 more variables: MAIN_CATEGORY <chr>, SUB_CATEGORY <chr>,
## # OVERALL_TOTAL_NUMBER <chr>, UPDATED_DATE <chr>, TABULATION_CATEGORY <chr>,
## # TABULATION_SUB_CATEGORY1 <chr>, TABULATION_CATEGORY_EXPLANATION <chr>,
## # TABLE_NAME <chr>, TABULATION_SUB_CATEGORY_EXPLANATION1 <chr>, and
## # abbreviated variable names ¹STAT_NAME, ²STATISTICS_NAME, ³SURVEY_DATE,
## # ⁴OPEN_DATE, ⁵SMALL_AREA, ⁶COLLECT_AREA
今回の分析では,基礎データ・社会生活統計指標のそれぞれから,以下の変数を用います.
1人当たり県民所得については,項目STATISTICS_NAMEに「基礎データ」,TITLEに「C」を含む統計表に含まれます.それ以外の変数は,項目STATISTICS_NAMEに「社会生活統計指標」,TITLEに「E」を含む統計表がその候補になりますので,統計表情報からそちらを抽出します.
tbl_info_si_pref_vars <- tbl_info_si_pref %>%
#項目STATISTICS_NAMEに「基礎データ」,TITLEに「C」を含む,もしくは
dplyr::filter((grepl("基礎データ",STATISTICS_NAME)&grepl("C",TITLE))|
#項目STATISTICS_NAMEに「社会生活統計指標」,TITLEに「E」を含む
(grepl("社会生活統計指標",STATISTICS_NAME)&grepl("E",TITLE)))
基礎データCの統計表IDは「0000010103」,社会生活統計指標Eの統計表IDは「0000010205」ですので,それぞれestat_getStatsData関数で統計表を取得します.
#基礎データCの統計表を取得
kiso_c <- estatapi::estat_getStatsData(appId=appId,
statsDataId="0000010103")
#社会生活統計指標Eの統計表を取得
sihyo_e <- estatapi::estat_getStatsData(appId=appId,
statsDataId="0000010205")
取得された各統計表から,必要なレコードのみを残します.具体的には,統計コードcat01_codeが上で挙げた変数コードに一致し,かつ調査年が「2010年度」に一致するもののみを残します.その上で,それらを行方向に結合します.
kiso_c_vars <- kiso_c %>%
#1人当たり県民所得
dplyr::filter(cat01_code=="C121101") %>%
#2010年度の観測値
dplyr::filter(調査年=="2010年度") %>%
#不要な変数を削除
dplyr::select(-`C 経済基盤`)
sihyo_e_vars <- sihyo_e %>%
#大学収容力指数
dplyr::filter(cat01_code=="#E0610202"|
cat01_code=="#E09504") %>%
#2010年度の観測値
dplyr::filter(調査年=="2010年度") %>%
#不要な変数を削除
dplyr::select(-`E 教育`)
#データを行方向に結合
vars <- rbind(kiso_c_vars,sihyo_e_vars)
データを変数毎にwide型に変形します.前もって必要な変数のみ残し,変数area_codeの先頭2文字から都道府県コードを新たな変数として作成します.また,変数コードcat01_codeに基づいて,変形後の変数名を与える変数varnamを作成します.その上で,データをlong型からwide型に変形します.
vars <- vars %>%
#都道府県コード変数を追加
dplyr::mutate(pref_code=substr(x=area_code,start=1,stop=2)) %>%
#必要な変数のみ残す
dplyr::select(cat01_code,pref_code,地域,value) %>%
#変数名を変更
dplyr::rename(pref_name=地域) %>%
#変数コードに応じた変数を作成
dplyr::mutate(varnam=dplyr::case_when(
cat01_code=="C121101" ~ "income",
cat01_code=="#E0610202" ~ "acom_univ",
cat01_code=="#E09504" ~ "univ_rate"
))
vars_wide <- vars %>%
#データをlong型からwide型に変形
tidyr::pivot_wider(id_cols=c(pref_code,pref_name),
names_from=varnam,
values_from=value)
head(vars_wide)
## # A tibble: 6 × 5
## pref_code pref_name income acom_univ univ_rate
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 00 全国 2944 121. 17.3
## 2 01 北海道 2379 118. 11.3
## 3 02 青森県 2262 68.8 9.1
## 4 03 岩手県 2275 59.8 9.7
## 5 04 宮城県 2389 132. 14.3
## 6 05 秋田県 2242 53.7 9
データを結合し,書き出します.
openxlsx::write.xlsx(x=vars_wide,
file="output/table_pref_vars.xlsx")
#Shapefileを読み込み
pref_office <- sf::read_sf(dsn="P28-13.shp") %>%
#変数P28_003が「12001」(都道府県庁舎)のレコードのみ残す
dplyr::filter(P28_003=="12001") %>%
#都道府県コードの変数を作成
dplyr::mutate(pref_code=substr(P28_001,1,2)) %>%
#都道府県コードの変数だけ残す
dplyr::select(pref_code) %>%
#都道府県コードでソート
dplyr::arrange(pref_code) %>%
#WGS84/UTM54Nに投影変換
sf::st_transform(crs=sf::st_crs(32654))
#GeoJSON形式で書き出し
sf::write_sf(obj=pref_office,
dsn="output/pref_office.geojson",
delete_dsn=TRUE)
取得元:コロプレス地図(塗り分け地図) インデックス | 歴史的行政区域データセットβ版
#都道府県ポリゴンを読み込み
pref_poly <- geojsonio::geojson_sf(x="jp_pref.c.topojson") %>%
#不整地物を補正
sf::st_make_valid() %>%
#WGS84/UTM54Nに投影変換
sf::st_transform(crs=sf::st_crs(32654))
#GeoJSON形式で書き出し
sf::write_sf(obj=pref_poly,
dsn="output/pref_poly.geojson",
delete_dsn=TRUE)