今回のデータは米国50州の「各種」データです。見ていて飽きませんが、例によって古いです。ほぼ50年以上前にまとめられたデータですが、項目によっては100年近く前に遡るデータもあり。まあこの手のデータだと、地図上に表したくなるのが人情?というもの。実際、処理例では米国地図を描いて一部を表示してみてます。地図の練習回?
※「データのお砂場」投稿順Indexはこちら
R言語所蔵のサンプルデータセットをABC順(大文字)優先で拝見させていただいております。
今回のサンプルデータセット
サンプルデータセットの解説ページが以下に。
『米国の州の事実と数字』と訳すのでしょうか。結構雑多な数字が州ごとにならんでます。並び順は州名のアルファベット順です。州名をフルスペルで表してもよいですが、私は全50州、とても綴る自信はありません。データは、米国で一般的な州名の2文字略称でもアクセスできるように配慮されとります。でもな~2文字略称、全50州覚えてないな~。カリフォルニアがCAくらいは間違えないけど。米国じゃ小学生でも間違わない?
まずは生データ
サンプルデータセットは state というお名前でロード可能です。しかし、ロードしても、state というお名前の変数は存在しません。アクセスしようとすると以下のようにエラーとなります。
実際には以下のように、state.チョメチョメ という名の7つの変数ができてます。なお、stateと指定せず、state.チョメチョメをそれぞれ単独でロードできるんじゃないかと思います。知らんけど。
上の方から、だいたい順に各データを見ていきます。まずはstate.centerです。x列とy列に各50個の数字が詰まってます。以下は出力の左端部分のみの切り取りです。x軸が経度、y軸が緯度であるようです。なお、x軸の経度は西経をマイナスで表示しておるようです。これらは州の「地理的中心」ということみたいです。ただ、どういう大人の事情か、アラスカとハワイの2州はウエストコーストの目と鼻の先の海中に置かれています。狭い用紙に地図書くとき用?
続く state.x77 というMatrixデータは、各州毎、9種の統計データを列挙してあるものです。なんでx77なのかは不明。まったくもって不明。以下は全50州の頭の方だけ。
Populationは、1975年7月1日の人口の推計みたいです。何も単位書いてないですけど、多分「千人」単位でないかと。現在よりも大分少ないです。たしかカリフォルニアの人口が現在4000万人くらいなので、約50年前は半分だったってことですな。
Incomeは、一人当たりの年間所得 “per capita income” らしいです。1974年の数字。現在米国全体の平均値が7万ドルくらいらしいです。この50年間の伸びすごくないですか?いや日本が停滞しておるのか。それにしても不思議なのが、裕福だと思われているカリフォルニアやコネティカットよりもこの時点のアラスカの収入が上なこと。石油成金か?
Illiteracyは非識字率です。単位は%。多分日本じゃ県ごとの非識字率など統計ないんじゃないかしらん。米国のような先進国にして結構な数字。
Life exp.は、平均寿命ですな。単位年。
次のMurderは、1976年における10万人あたりの「殺人と過失致死」らしいです。恐ろしい。
HS Gradは、1970年の高卒のパーセンテージみたいです。大卒のパーセンテージはないので、高校卒業しているか否かの数字とすると思ったより低いデス。日本の50年前はどうだったのか?
Frostは、1931年から1960年までの期間で、州都か大都市(どこだよ?)で最低気温が氷点下を記録した日数の平均らしいです。当然ハワイは0日ね。
areaは平方マイル単位の州の面積だと。
さてお次は、州名の2文字略号 state.abb と州名 state.name です。Mississippi とかみた日にゃ、州名を綴れる気がしないです。一方2文字の略号は、馴染みのある場所以外は覚えられませぬ。
state.areaというお名前で、再び州の面積(平方マイル単位)が登場します。同じものがstate.x77の列にもあったような。これが比べてみると微妙に違います。
最後は、state.divisionとstate.regionです。最初、pacificとかMountainとか見てタイムゾーンかとも思いましたが、どちらの分類もタイムゾーンとは違います。どいういう基準で層別しているのかしらん?言葉を聞けば、なんとなくそうよね、という分類だけれども真ん中辺はどういう基準なんだか?まあ、アパラチア山脈より西は全部西部。ほんとか?
処理例にそって処理
今回の解説ページには処理例ありです。それをそのまま実行してみました。
まず最初のステップは州の中心位置を2文字略称でひけるデータフレームを作成しています。こんな感じ。以下は処理結果の先頭部分のみ表示です。
わざわざ2変数 dst と dxy に代入しているのは次でデータを操作するので、元データと修正後データの2つにするためのようです。なお、式を() でくくることで代入結果がコンソールにも返ってきます。
続いて、アラスカとハワイの位置が本土よりのテキトーな位置におかれているのを実位置に修正するようです。dstには「嘘の」データ。dxyの方に正しい値を代入し、state.centerに対抗する state.center2を生成してます。
州の中心位置を「正せた」ところで、以下のようにしてプロットしてみてます。
赤の十字で州の中心と黒字の2文字略称です。アラスカとハワイだけは、マル印で元データの位置を示した上で矢印書いてこんだけずれてた、と。
上記だと米国本土の形がほんわか見える気がしますが、外形を描きたいです。R言語ではいくつか地図描画できるパッケージがあるみたいですが、ここでは、ライブラリ maps の中の map() 関数使ってました。デフォルトでは maps ライブラリはインストールされていなかったです。インストールからしないとなりません。
ライブラリをロード後、map()使ってみます。mapの場所指定も “state” とな(何も指定しないと世界地図でした。)
本土しか描いてくれないのね。
やっぱり本土しか描いてくれないのね。