www.crosshyou.info

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

就業構造基本調査の分析2 - R言語のdplyrパッケージでデータ変換する練習

 

www.crosshyou.info

 の続きです。

今回は前回データを読み込んだ就業構造基本調査のデータをdplyrパッケージを使っていろいろデータ変換する練習です。参考にする文献は

 

Rではじめるデータサイエンス

Rではじめるデータサイエンス

 

 です。

まず、tidyverseパッケージを読み込みます。

f:id:cross_hyou:20181126205305j:plain

それと前回作成したデータフレームをtibbleにas_tibble関数で変換しておきます。

f:id:cross_hyou:20181126205546j:plain

これで準備完了です。

「男女」「続柄など」「年齢」はデータ型が<fct>となっているのでファクタのデータ型だとわかります。その他の変数は、<int>なので整数のデータ型です。

dplyrパッケージには主要な5つの関数があります。

filter関数:観測値にフィルタをかけてデータを絞りこみます。

arrange関数:行を並び替えます。

select関数:名前で列(変数)を選びます。

mutate関数:既存の変数を操作して新しい変数を作ります。

summarize関数:group_by関数とあわせてデータの要約量を作ります。

まずは、filter関数を練習してみます。

filter関数を使って、総数が0の行を探してみましょう。

f:id:cross_hyou:20181126210824j:plain

A tibble : 3 x 14 となっていますから、総数が0の行は3行ありました。年齢が15~1~というのですね。15~19歳の死別離別ですね。死別離別は結婚して配偶者が死別もしくは離別したということですから、15~19歳では0で当然ですね。

次はarrange関数で行を並び替えてみましょう。総数の大きい順に並び替えてみます。

f:id:cross_hyou:20181126211359j:plain

「男女」総数、「続柄など」総数、「年齢」総数が一番多いですね。1.11e8ですから111,000,000人です。次が女性トータルで57,400,000人ですね。男性トータルは53,500,000人です。

select関数で列を選択することができます。右側にある変数、「通学している者」と「その他」を選択してみましょう。

f:id:cross_hyou:20181126212211j:plain

「男女」「続柄など」「年齢」すべて総数の値でみると、「通学している者」は648万7900人、「その他」は1768万3100人です。「通学している者」って学生ってことですかね?働きながら学校に通っている人もいるからですかね。

mutate関数で新しい変数を作成できます。有業者 / 総数 で「有業率」という変数を作成してみます。

f:id:cross_hyou:20181126213110j:plain

一番上の行、全体でみると有業率は0.597ですね。15~19歳は0.174と低いですね。

summarize関数で有業率を男女別の平均値を計算してみます。summarize関数はgroup_by関数と合わせて使うと威力を発揮します。

f:id:cross_hyou:20181126215331j:plain

mutate関数で作成された変数はそのままでは保存されないので、data_sml <- mutate(~~~)として新に作成して変数を保存します。

そしてgroup_by関数で「男女」の女、総数、男の3つのグループにわけ、summarize関数で女の平均有業率は0.527、総数の平均有業率は0.568、男の平均有業率は0.625と計算できました。count = n()という変数も作成して何個のデータで平均値を計算しているのかわかるようにしています。この場合には144個のデータです。

同じように、年齢ごとの平均有業率を計算しましょう。

f:id:cross_hyou:20181126221020j:plain

一番平均有業率の高い年齢は、30~34歳の0.873ですね。

「続柄など」の属性別の平均有業率も出しましょう。

f:id:cross_hyou:20181126221411j:plain

世帯主の平均有業率が0.623で一番高いことがわかります。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。