投稿

6月, 2016の投稿を表示しています

Rでデータフレームを部分抽出後、ベクトルや行列に変換する

イメージ
例えば↓こんな感じで、各市町村の人口データがあったとします。 city   <- c("A市", "B町", "C村", "D市") male   <- c(95, 49, 26, 45) female <- c(99, 51, 24, 55) df <- data.frame(city, male, female) df   city male female 1  A市   95     99 2  B町   49     51 3  C村   26     24 4  D市   45     55 で、人口や男女比を比較するために、それぞれの市町村に対してグラフを描いてみようとしたとします。 じゃあ、1行ごとにループで回しながら、barplotあたりを使って、グラフを描いてみようとしまして、↓こんな風にスクリプトを書くと(iがループのカウンタだと思ってね)、 # i行目の男女人口を棒グラフにしたい・・・ barplot(df[i, c("male", "female")])  barplot.default(df[i, c("male", "female")]) でエラー:    'height' はベクトルか行列でなければなりません なんでだ?と思って、切り出される部分をチェックしてみると、 df[i, c("male", "female")]   male female 1   95     99 class(df[i, c("male", "female")]) [1] "data.frame" 構成要素としては、2つの数値の並びになっているもの、型がデータフレームなもんだから、barplotにそのまま渡すとエラーになってしまうのね。ちなみに、円グラフのpie関数なんかでも同じで、データフレームのままでは受け取ってくれない。 じゃあ、ベクトルに変換してあげよう。 barplot( as.vector(