12章 forcatsでファクタ

12.0 ライブラリの読み込み

library("tidyverse")
library("gridExtra")
library("stringr")

12.1 はじめに

練習問題はありません

12.2 ファクタを作る

練習問題はありません

12.3 総合的社会調査

練習問題1 rincome(報告所得)の分布を調べなさい。デフォルトの棒グラフを理解するのが難しい理由も答えなさい。

デフォルト設定でgeom_bar()を使うと、ラベルが重なってしまい、なんのカテゴリかわかりません。

ggplot(gss_cat, aes(rincome)) +
  geom_bar()

このような場合はラベルを回転させると、テキストが見やすくなります。

棒グラフにカウント数を表示させたい場合はgeom_text()を使います。テキストの位置は、vjustでも座標を指定してもどちらでもよいかと思います。カテゴリで色分けして、棒グラフを作る場合は、座標位置を指定したほうが柔軟かもしれません。

もう少し改善するためにfct_recode()を使います。この関数は、カテゴリの値を修正することができます。ここでは、"Lt $1000"を"Less than $1000"に変更しています。また、ラベル名が長いので、見やすくするために座標を回転させています。

練習問題2 総合的社会調査で最も多いreligpartyidは何か。

religProtestantで、partyidIndependentが最も多いようです。

fct_infreqfct_revを使うことで簡単にファクタの水準を操作することが可能です。

練習問題3 どのreligdenomが適用されるのか。表からどうやって見つけるか?どう視覚化するべきか?

文脈からdenomは、「プロテスタント」を指すことは明らかです

視覚化するのであれば、カテゴリの散布図でよいと思います。

12.4 ファクタの順序の変更

練習問題1 tvhoursの高い値は疑わしい。平均は適切なのか。

視覚化してみると、確かに10時間を超えるtv視聴時間があります。

このような場合、平均は外れ値に引っ張らてしまうため、中央値のほうが望ましいかもしれません。

練習問題2 gss_catの各ファクタについて、水準の順序が定まっているか調べなさい。

このデータセットには6個のファクタ型のカラムが存在しています。ここでは、levels()を使えば、水準を確認できますが、ここでは一気に視覚化して、内容を確認します。このプロットを見る限り、raceはカウント数で順序付けられており、rincomeは値の順番で順序付けられています。

練習問題3 Not applicableをレベルの前に移動し、プロットの最下段に移動したのはなぜか。

質問の意図がいまいちよくわかっていません。書籍の中では下記のコードを利用し、"Not applicable"を最下層に配置しています。

fct_relevel()自体は、指定したレベル順で水準を並び替えます。

12.5 ファクタの水準の変更

練習問題1 民主党員、共和党員、および独立党員として分類される人々の割合は、時間経過とともにどのように変化したか?

まずpartyidの内容が細かいので、指定されている粒度に変換します。fct_collapse()でカテゴリを丸めることが可能です。あとは年別に、割合を求めてプロットすれば推移が確認できます。

練習問題2 rincomeをより少数のカテゴリにまとめるにはどうすればよいか。

fct_collapse()str_c()を組み合わせることで、カテゴリを効率的に丸めることができます。ここでは5000単位で丸めます。

最終更新

役に立ちましたか?