Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

社会生活基本調査データの分析1 - R言語で基本統計量を算出

今回は社会生活基本調査のデータを分析しようと思います。

f:id:cross_hyou:20190309145833j:plain

e-Stat 政府統計の総合窓口からデータを取得します。「ファイル」をクリックしてみます。

f:id:cross_hyou:20190309145923j:plain

社会生活基本調査は、統計法に基づく基幹統計調査として、生活時間の配分や、余暇時間における主な活動(学習・自己啓発・訓練、ボランティア活動、スポーツ、趣味・娯楽及び旅行・行楽)を調査し、国民の社会生活の実態を明らかにするための基礎資料を得ることを目的として5年ごとに実施しています。とのことです。

f:id:cross_hyou:20190309150206j:plain

この図の表番号1のエクセルをダウンロードしてみました。

f:id:cross_hyou:20190309150246j:plain

こういうファイルでした。これをそのままR言語に読み取るのは大変なので、読み取り安いように加工します。

f:id:cross_hyou:20190309152103j:plain

これをread.csv関数で読込み、str関数で構造を見てみましょう。

f:id:cross_hyou:20190309152532j:plain

データは、45の観測、16の変数です。 n = 45, p = 16 ですね。SexとAgeがファクタで、その他は数値データです。summary関数で基本統計量を算出します。

f:id:cross_hyou:20190309152900j:plain

このような結果が表示されます。ひとつひとつ確認していきます。

そのまえに、attach(df)とコマンド入力して、わざわざdf$Sexとしないで、Sexだけで呼び出せるようにします。

f:id:cross_hyou:20190309153235j:plain

Sexは文字通り性別で、男が15、女が15、男女合計が15です。

f:id:cross_hyou:20190309153448j:plain

Ageは年齢ですね。1014yというのは10歳から14歳という意味です。15歳から19歳、20歳から24歳と5歳ずつ増えていて、最後は7599yとなっているのは75歳以上です。それと男女合計の合計がBoth_total, 男の合計がMale_total、女の合計がFemail_totalです。

Both_total, Male_total, Femail_totalのデータは削除してしまいましょう。あ、それとSexのBothも削除してしまいましょう。

f:id:cross_hyou:20190309155204j:plain



これで、男女別、年齢別の純粋なデータフレームになったはずです。

確認してみましょう。まず、detach関数でdfを初期設定のデータフレームから解除し、attach関数でdfnewを初期設定のデータフレームにします。

f:id:cross_hyou:20190309155243j:plain



それでは、summary関数で確認します。

f:id:cross_hyou:20190309155325j:plainSexのBothが0になりました。AgeのBoth_total, Female_total, Male_totalも0です。

droplevels関数で不要なファクタ水準を削除しましょう。

f:id:cross_hyou:20190309160227j:plain



はい。これで不要なファクタ水準もなくなりました。

改めて、summary(dfnew)を実行してみましょう。

f:id:cross_hyou:20190309160358j:plain

はい、こんな感じです。

今回は以上です。
次回は

 

www.crosshyou.info

 

です。

以下は今回のR言語のコマンドです。

# データファイルの読込み
df <- read.csv("shakaiseikatsukihon.csv")

# データ構造の確認
str(df)

# summary関数で基本統計量
summary(df)

# dfを初期設定のデータフレームにする
attach(df)

# Sex
summary(Sex)

# Age
summary(Age)

# SexのBothを削除
dfnew <- df[df$Sex != "Both", ]

# AgeのBoth_total, Male_total, Female_totalを削除
dfnew <- dfnew[dfnew$Age != "Both_total" &
dfnew$Age != "Male_total" & dfnew$Age != "Female_total", ]

# dfを初期設定のデータフレームから解除する
detach(df)

# dfnewを初期設定のデータフレームにする
attach(dfnew)

# Sex
summary(Sex)

# Age
summary(Age)

# droplevelsで不要なファクタ水準を削除
dfnew$Sex <- droplevels(dfnew$Sex)
dfnew$Age <- droplevels(dfnew$Age)

# tableで確認
table(dfnew$Sex)

table(dfnew$Age)

# summary
summary(dfnew)