jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

Rで作成した度数分布表のラベルと値をすぐに使いたい

今回はRの使い方の話です。最初に考えた方法がうまくいかなかったので、意外に解決策を見つけるのに手間取ったので自分のためのメモ。でも同じ問題で行き詰まる方にも共有します。

Rで表を作るならtable関数

Rのbaseパッケージで度数分布表を作るときはtable関数を利用します。

data <- c("りんご", "りんご", "オレンジ", "オレンジ", "バナナ", "バナナ", "バナナ")

res <- table(data)
オレンジ バナナ りんご
2 3 2

これ自体は特に問題なく利用できます。

度数分布表のラベルはname関数で取得可能

度数分布表のラベルだけ使いたいことがあります。例えば、度数は関係なく、項目のバリエーションの数だけが気になっているような時です。これはname関数を使えば取得可能です。

names(res)

出力は以下のようになります。

[1] "オレンジ" "バナナ" "りんご"

度数分布の値を取得するにはどうすれば良いか?

table関数の出力は、table クラスという特殊な形式をとっています。リストオブジェクトではないのでunlist関数を使っても値とラベルの分離ができません。tableオプジェクトの値だけを取り出す際にはas.numeric関数が良さそうです。

as.numeric(res)

以下のような出力が得られます。

[1] 2 3 2

データフレームオブジェクトの利用

table関数で出力した度数分布表のラベルや値を別の計算で再利用するならdata.frame関数でデータフレームオブジェクトにしてしまうのが一番便利そうです。

new.data <- data.frame(res)

これを実行するとnew.dataの中身は以下のようにdataとFreqという変数を持つデータフレームオブジェクトになります。

data Freq
1 オレンジ 2
2 バナナ 3
3 りんご 2