
R言語付属のサンプルデータベースをABC順にめぐってます。今回は mapsパッケージのstate.fipsです。FIPSコード、忘却力の老人も覚えておりますぞ。2か月ほど前の過去回で郡レベルのFIPSコードを練習してます。しかし今回は州レベルです。順番逆だとよかったが、ABC順です。いたしかたありません。
※「データのお砂場」投稿順Indexはこちら
※使用させていただいている Rのversionは 4.3.1。RStudioは 2024.04.2+764 “Chocolate Cosmos” です。
FIPSコード再び
FIPSコードについては以下の過去回で練習してます。
データのお砂場(169) R言語、county.fips、廃止されたけど使用中?{maps}
米国の各郡に対して統計処理などの用途向けに割り当てられている「7桁」の数値コードであるようです。うち下5桁が郡レベル、上位2桁が州レベルに割り振られてます。今回はその「上位2桁」ということだね。しかし、上記の過去回で調べてますが、「公式」には既に廃止されてて新たなコード体系に移行しているみたい。でも長年使い続けられたためか今も各所で愛用されておるらしいです。。。知らんけど。
実際のコードについては「泣く子も黙る」米FCC様の以下のページに一覧表があります。
Federal Information Processing System (FIPS) Codes for States and Counties
2桁のコードは、1から56まであります。米国って50州だったよね。ま、そのうち+1の理由は分かります。首都ワシントンの
コロムビア特別区
が州あつかいされている筈。これで+1ね。しかしまだ5差。上記の一覧表を端から眺めていくと直接の原因は分かりました。
-
- 03 … 欠番?
- 07 … 欠番?
- 14 … 欠番?
- 43 … 欠番?
- 52 … 欠番?
そこにどのような経緯があるのかは知らず、上記の5コードには州が割り当てられていません。なぜなんだ?
state.fips
さて今回のサンプルデータセットについての説明ページが以下に。
https://search.r-project.org/CRAN/refmans/maps/html/state.fips.html
データベースにはFIPSコード以外に以下のような項目が含まれてます。
-
- fips
- ssa
- region
- division
- abb
- polyname
1番はFIPSコードそのもの、3のregionと4のdivisionは大まかな地域わけのための分類みたいです。日本でいったら東北とか近畿とかいう感じ。5のabbは2文字の短縮名、そしてpolynameは州のお名前ね。
2版のssaだけ、なんじゃらほいです。こういうときには Googleの生成AI、Gemini様に聞いてみるというものです。
なあんだソーシャル・セキュリティ・ナンバーを発行してくれているお役所のコードだ。はるか半世紀近くも前、ソーシャル・セキュリティ・オフィスというところへ出頭しペナペナの紙カードをいただいたことがあるのです。このカードがないと銀行に口座も開けん、ということで頂きました。今では日本でもマイナンバーカードありますが。
先ずは生データ
mapsパッケージ内のサンプルデータセットなので以下のようにしてロードしてみます。
library(maps) data("state.fips") str(state.fips)
地図に描いてみる
まずは素直に地図上にFIPSコードを記してもらいます。処理はこんな感じ。
map.text('state', labels=as.character(state.fips$fips)) title("state.fips$fips")
上記をみても、2番と15番が無いのです。しかし “state” とやると米国本土のみ、遠く離れたアラスカとハワイはプロットしてくれませぬ。そして2番はアラスカ、15番はハワイなのでした。いろいろあるのう。
またデータベースには63行含まれてます。実体のある50州+1特別区より多いです。上記の地図の海岸線をみると「大きな島」は別ポリゴンになっているのでそいつらに対応する分、複数行にわたる州があるということでした。
regionで色分け
サンプルデータセットの中のregionという列があるので、それで色分けしてみました。
map('state', fill = TRUE, col = (state.fips$region+1)) title("state.fips$region")
短縮名をプロット
ついでに各州の短縮名です。
map.text('state', labels=as.character(state.fips$abb)) title("state.fips$abb")
アメリカは広い。あたりまえだろ。