この記事では、Rで、CSVデータをシェープファイルに結合する方法について説明します。
記事の概要です。
まず、シェープファイルとCSVファイルを読み込みます。
次に、dplyrのleft_joinを使って両者を結合します。
シェープファイルとCSVファイルで結合に使うカラムの名前が異なるため、left_joinのby引数には名前付きベクトルを渡します。
left_join(shp, d, by = c("N03_004" = "市区町村"))
プログラム全体を示します。
## シェープファイル読み込み library(sf) shp <- st_read("./data/N03-20150101_08_GML", options = "ENCODING=SHIFT-JIS") ## CSVファイル読み込み d <- read.csv("./data/kekkahyo1_ibaraki_2015-2045.csv") ## 結合 library(dplyr) shpCsv <- left_join(shp, d, by = c("N03_004" = "市区町村")) ## 確認 head(shpCsv)

left_joinを始めとした結合系の関数、私の使用頻度は高いです。
基本的な関数なので、ぜひ覚えて下さい!
また、この記事は、QGISのこちらの記事と対応しています。
この記事で使用したRとパッケージのバージョンを記載しておきます。
バージョンが異なると、動作や表示も若干異なる場合があるからです。
- R 3.6.1
- sf 0.7-6
- dplyr 0.8.3
CSVデータをシェープファイルに結合する
まず、シェープファイルとCSVファイルを読み込みます。
もしシェープファイルが無ければ、こちらを参考にダウンロードして下さい。
CSVデータは、こちら(URL)からダウンロードできます。
## シェープファイル読み込み library(sf) shp <- st_read("./data/N03-20150101_08_GML", options = "ENCODING=SHIFT-JIS") ## CSVファイル読み込み d <- read.csv("./data/kekkahyo1_ibaraki_2015-2045.csv")
では、両者を結合します。
結合に使うカラムは市町村名のカラムです。
市町村名のカラムは、シェープファイルでは「N03_004」、CSVファイルでは「市区町村」という名前になっており、両者で異なります。
そのため、名前付きベクトルを使って以下のように結合します。
## 結合 library(dplyr) shpCsv <- left_join(shp, d, by = c("N03_004" = "市区町村"))
もし、CSVファイルでも市町村名のカラム名がシェープファイルと同じ「N03_004」だった場合、結合は以下のようになります。
## 結合に使うカラム名が同じ(N03_004)場合 library(dplyr) shpCsv <- left_join(shp, d, by = c("N03_004"))
では、結合したデータを確認します。
## 確認 head(shpCsv) Simple feature collection with 6 features and 14 fields geometry type: POLYGON dimension: XY bbox: xmin: 140.3217 ymin: 36.30072 xmax: 140.639 ymax: 36.50865 epsg (SRID): NA proj4string: +proj=longlat +ellps=GRS80 +no_defs N03_001 N03_002 N03_003 N03_004 N03_007 コード 都道府県 cy2015 cy2020 cy2025 1 茨城県 2 水戸市 08201 8201 茨城県 100 100.0 99.0 2 茨城県 1 日立市 08202 8202 茨城県 100 95.2 89.4 3 茨城県 1 日立市 08202 8202 茨城県 100 95.2 89.4 4 茨城県 1 日立市 08202 8202 茨城県 100 95.2 89.4 5 茨城県 1 日立市 08202 8202 茨城県 100 95.2 89.4 6 茨城県 1 日立市 08202 8202 茨城県 100 95.2 89.4 cy2030 cy2035 cy2040 cy2045 geometry 1 97.2 94.8 91.8 88.3 POLYGON ((140.3894 36.46392... 2 83.0 76.4 69.8 63.4 POLYGON ((140.6364 36.47452... 3 83.0 76.4 69.8 63.4 POLYGON ((140.6301 36.48646... 4 83.0 76.4 69.8 63.4 POLYGON ((140.6305 36.49491... 5 83.0 76.4 69.8 63.4 POLYGON ((140.6388 36.49908... 6 83.0 76.4 69.8 63.4 POLYGON ((140.6353 36.50807...
「コード」から「cy2045」までのカラムがCSVデータです。
結合は特に問題なく行われたようです。
今回は以上です。
おわりに
お疲れさまでした。
結合に関しては、QGISとRで大きな差は感じませんでしたが、いかがでしょうか?
次回は、今回結合したデータを使い、数値に基づく地図の色分けを行ないます。
では。
—
YouTube: ミサキさん
問い合わせ先
Mail: caprico.aries@gmail.com
Twitter: https://twitter.com/caprico_aries(無言フォローもお気軽に)
コメント
[…] 記事の概要です。まず、前回の記事を参考に、シェープファイルとCSVファイルを結合します。次に、色分けに使う値(2020年の推計人口)をグループ分けします。グループ分けには、変化が大きいところで区切る「自然分類」を用います。そして描画時、geom_sfのfill引数にグループ分けした数値のカラムを渡すと、数値(グループ)に基づいたポリゴンの色分けがなされます。 […]
[…] CSVデータをシェープファイルに結合する | R, GIS […]