R言語所蔵のサンプルデータセットをABC順(大文字)優先で拝見させていただいております。今回は rivers とな。北米の主要河川の「長さ」のデータみたいです。長さ順に並べるくらいしかその処理を思いつかないのです。しかしデータは名無しの権兵衛、単なる数値の羅列です。川のお名前がありませぬ。
※「データのお砂場」投稿順Indexはこちら
今回のサンプルデータセット
例によって、サンプルデータセットの解説ページが以下に。なお今回は処理例などの記載は一切ないです(処理といっても何したら良いのかという感じかも。)
Lengths of Major North American Rivers
以前にも登場しましたが、このサンプルセットは以下の書籍に掲載されていたデータみたいです。北米ということでカナダの河川も入っているのだと思うのですが、米国の御本なので「当然」河川の長さの単位はマイルです。
World Almanac and Book of Facts, 1975, page 406.
上記の版は所持しておらんのですが、上記より10年ほど後の以下の版を所持しとります。40年以上前の御本なので、もともと悪かった紙質がかなり変色しております。
1986, SPECIAL EDITION
上記の page 545 に元データと思われるものが記載されております。単なる長さだけではなく、河川名およびその水源もしくは分流、合流点、河口の地名などが記載されています。まあ地図みておいかければどこからどこまでの長さであるのかはだいたい追いかけられるようになっとります。この辺の配慮は嬉しい。
まずは生データ
生データをロードしてみると、一切の付加的データのない141要素の数値ベクトルが現れました。こんな感じ。
一応、サマリをとってみると、135マイル(217km)から3710マイル(5971km)までの河川が含まれておるようです。
しかし、河川のお名前など一切見当たりません。
一応、長さでソートして dotchart 化してみました。操作が以下に。
河川の長さは分かるのですが、お名前が無いのでなんだかな~なデータです。
せめて最長河川のお名前だけでもグラフに書きたい
元データと同じらしい本を所持しているので、数値を確認しつつ、お名前を拾っていけば、全データに河川名を付加することは不可能ではないです。しかし、ページの端っこ(書籍の「ノド」)近くまで印字されているデータなのでOCRかけても苦労するのは目に見えてます。手作業で141点も入力するのはパス。せめて最長河川のお名前だけでも記載しようと考えました。多分、ミシシッピ川だよね、きっと。ミシシッピってだいたいどう綴ればよいのだっけ?
まずは数値ベクトルの中でどこにあるのか調べておきました。summaryの結果から最大値は3710.0と分かっているので以下のようにしてみました。
データ(長さ順でなく河川名のアルファベット順)では68番目なのね。
河川名だけ別に文字列のベクトルを作って dotchartのlabelsにそれを渡してもよいのですが、元データを「名前付き」のベクトルにしてしまうことにいたしました。1個の変数で持ち運びが楽そうだし。
ただし、names()でお名前をつけるときは、一度に全部与える必要があるみたいです。1個だけだとダメなのね。全部を入力したくないので、以下のようにしてみました。68番目がミシシッピーミズーリ川だと。
v0 <- rep("", length(rivers)-1) v1 <- c("Mississippi-Missouri") v2 <- append(v0, v1, after=67) names(rivers) <- v2
ミシシッピの綴りは大丈夫か?難しいです。なお、元表の中にはミシシッピという名の河川がいくつもあるのですが、「最長」認定されているのは上流がミズーリ川でミシシッピ本流に合流後、メキシコ湾に向けて流れくだる経路みたいっす。ミズーリ川の水源はイエローストーン近くの山中のコンチネンタル・ディバイド付近みたいです。モンタナ州を東に流れくだるっと。知らんけど。
プロット結果が以下に。最長河川のところだけお名前入ってます。
ダントツの3710マイル、5971kmかあ。長いデス。