www.crosshyou.info

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

外資系企業動向調査の分析4 - R言語で操業率、撤退率、開業率の散布図を作成する。ggplotパッケージを使用。

 

www.crosshyou.info

 の続きです。

今回は合計、非製造業、製造業という業種の大分類を除いたtibbleを作成してggplot2パッケージでグラフをいろいろ作りたいと思います。

まずは、filter関数、mutate関数、as.character関数、factor関数を使って個別業種だけのtibbleを作成します。

f:id:cross_hyou:20190223143340j:plain

操業率を追加しましょう。

f:id:cross_hyou:20190223143738j:plain

これでグラフ作成のためのtibbleが作成できました。

操業率をヒストグラムにしてみましょう。

ggplot関数とgeom_histogram関数です。

f:id:cross_hyou:20190223144214j:plain

f:id:cross_hyou:20190223144225j:plain

操業率が0%の観測がいくつかあることがわかります。これらの観測を削除して、再度ヒストグラムを作成してみます。

f:id:cross_hyou:20190223144605j:plain

f:id:cross_hyou:20190223144621j:plain

操業率が70%以下のものもありますね。

年度と操業率を組み合わせたグラフを作成してみます。

ggplot関数とgeom_freqpoly関数です。

f:id:cross_hyou:20190223145413j:plain

f:id:cross_hyou:20190223145429j:plain

年度ごとの操業率の分布はあんまり変わりがないような気がします。

業種と操業率はどうでしょうか?

f:id:cross_hyou:20190223145758j:plain

f:id:cross_hyou:20190223145810j:plain

線が多すぎて何が何だかよくわかりませんね。。

今度は、操業率と操業中を見てみましょう。ggplot関数とgeom_point関数で散布図を描きます。

f:id:cross_hyou:20190223150335j:plain

f:id:cross_hyou:20190223150347j:plain

操業中の数で1000以上、250から500の間、250未満という3つのグループに分けることができますね。250未満のグループだけで散布図を描いてみます。

f:id:cross_hyou:20190223150815j:plain

f:id:cross_hyou:20190223150846j:plain

年度ごとに色分けしてみます。

f:id:cross_hyou:20190223151358j:plain

f:id:cross_hyou:20190223151415j:plain

年度によっての違いは無いですね。

撤退ヒストグラムを作成してみましょう。0を除いて作成します。

f:id:cross_hyou:20190223152057j:plain

f:id:cross_hyou:20190223152111j:plain

40以上撤退している業種もありますね。

撤退の大きい観測を表示してみましょう。arrange関数ですね。

f:id:cross_hyou:20190223152356j:plain

あ、全部卸売業ですね。撤退 / 合計 で撤退率という変数を作成しましょう。mutate関数ですね。

f:id:cross_hyou:20190223152930j:plain

撤退率で並び替えてみましょう。arrange関数ですね。

f:id:cross_hyou:20190223153211j:plain

そうだ、開業率 = 設立後初決算前 / 合計 x 100 という変数も作成しましょう。

f:id:cross_hyou:20190223153619j:plain

変数の数が多くなって、Rコンソール画面にきれいに表示されなくなりましたね。

分析に必要な変数だけに絞り込んだ新たなtibbleを作成します。

f:id:cross_hyou:20190223153930j:plain

いい感じですね。

開業率で並び替えてみます。

f:id:cross_hyou:20190223154107j:plain

操業率と撤退率の散布図を描いてみましょう。

f:id:cross_hyou:20190223154502j:plain

f:id:cross_hyou:20190223154516j:plain

右肩下がりの逆相関ですね。

操業率と開業率はどうでしょうか?

f:id:cross_hyou:20190223154725j:plain

f:id:cross_hyou:20190223154737j:plain

開業率が0%の観測を削除してもう一度散布図を描いてみます。

f:id:cross_hyou:20190223155044j:plain

f:id:cross_hyou:20190223155141j:plain

相関はなさそうですね。

撤退率と開業率の関係はどうでしょうか?

f:id:cross_hyou:20190223155430j:plain

f:id:cross_hyou:20190223155446j:plain

撤退率、開業率が 0% の観測を除外して散布図を描いてみます。

f:id:cross_hyou:20190223155755j:plain

f:id:cross_hyou:20190223155812j:plain

相関はないようですね。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

 

外資系企業動向調査の分析3 - R言語で業種別の操業率を見てみる。group_by関数とsummarize関数を活用

 

www.crosshyou.info

 の続きです。

今回は、業種別の操業率を見てみようと思います。

まずは、どんな業種があるかを確認しましょう

f:id:cross_hyou:20190223103112j:plain

左上の ’ みたいなのと、業種(2007年-)というおかしなものが0で残っていますね。。

削除してみましょう。0で要素は無いですから、as.charracter関数で文字列に変換してからfactor関数でファクターに再変換するといいでしょう。

f:id:cross_hyou:20190223103813j:plain

これで準備完了です。

まず、select関数で業種、合計、操業中の列を選択し、group_by関数で業種にまとめ、summarize関数で業種別の合計、操業中の合計値を出し、mutate関数で操業率を計算する、という手順かな?やってみます。

f:id:cross_hyou:20190223104242j:plain

select関数で業種、合計、操業中だけにしました。

f:id:cross_hyou:20190223104524j:plain

group_by関数を実行すると、# A tibble: 261 x 3 の行の次に、# Groups: 業種[29]という行が加わりました。

f:id:cross_hyou:20190223105228j:plain

summarize関数で合計、操業中をsum関数で合計値を処理し、合計値を求めました。

# A tibble: 29 x 3 となっています。

f:id:cross_hyou:20190223105913j:plain

こうなりました。運輸業は操業率は94.2%, その他の非製造業の操業率は85.0%とわかりました。年度による操業率のバラツキよりも、業種による操業率のバラツキのほうが大きいですね。全29業種を見てみましょう。まず、この 29 x 4のtibbleを名前を付けて保存しましょう。

f:id:cross_hyou:20190223110830j:plain

tbl_g という名前で保存しました。業種不明というのがありますね。

これを削除しましょう。filter関数で削除できますね。

f:id:cross_hyou:20190223111309j:plain

# A tibble: 28 x 4 となりましたので、業種不明が削除されてることがわかりますね。

arrange関数を使って合計の大きい順に並び替えてみます。print関数を使って28業種全部表示しましょう。print(n = 28)とするとtibbleでも28行全部表示できます。

f:id:cross_hyou:20190223111713j:plain

合計が一番多いのは当たりまえですが、非製造業が24922、製造業が5442と非製造業が断然多いですね。鉄鋼が一番少ないです。でも外資系の鉄鋼があるとは意外でした。

操業率の高い順に並び替えてみます。

f:id:cross_hyou:20190223112351j:plain

非鉄金属が一番の操業率で、その他の非製造業が一番低く、不動産業が2番目に低いことがわかりました。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

外資系企業動向調査の分析2 - R言語のas_tibble関数でtibbleに変換して、filter関数、select関数、mutate関数、arrange関数

 

www.crosshyou.info

 の続きです。

前回は e-Statから出力したファイルをそのままR言語に読込ませて、R言語上で整理されたデータにする、という作業でした。

今回は各データを大きい順に並び替えてみましょう。

せっかくだから、tidyverseパッケージを使ってみましょう。

まずは、tidyverseパッケージをインストールします。install.packages関数です。

f:id:cross_hyou:20190221193131j:plain

インストールしたら、library関数で読込みます。

f:id:cross_hyou:20190221193331j:plain

まずは、データフレームを as_tibble関数で tibble に変換します。

f:id:cross_hyou:20190221193623j:plain

 

tibbleはhead関数を使わなくても、はじめの数行、10行しか表示しません。そして、str関数を使わなくてもこのデータフレームが261観測、9変数だとわかりますし、各変数の型もわかります。

arrange関数で並び替えましょう。

f:id:cross_hyou:20190221194225j:plain

2015年が3681社で一番多いですね。

操業中で並び替えます。

f:id:cross_hyou:20190221194405j:plain

これも2015年度ですね。

設立後初決算前で並び替えます。

f:id:cross_hyou:20190221194607j:plain

2011年度が一番多く24社です。

未設立未操業で並び替えます。

f:id:cross_hyou:20190221194759j:plain

2013年度、2012年度、2008年度が8社で一番多いです。

休眠中で並び替えます。

f:id:cross_hyou:20190221195147j:plain

2008年度が78社で一番です

撤退で並び替えます。

f:id:cross_hyou:20190221195339j:plain

2010年度が172社で一番多いです。

調査対象外で並び替えます。

f:id:cross_hyou:20190221195553j:plain

2007年度が106社で一番です。

業種を合計だけに絞り込んでみましょう。filter関数です。

f:id:cross_hyou:20190221200050j:plain

さらにselect関数で年度から操業中までを表示しましょう。

f:id:cross_hyou:20190221200323j:plain

select関数では変数A:変数B とすると、変数Aと変数Bの間にあるすべての変数を選択できます。

さらに、mutate関数で操業率(操業中 / 合計)を計算しましょう。

f:id:cross_hyou:20190221200821j:plain

さらに、arrange関数で操業率の大きい順にしましょう。

f:id:cross_hyou:20190221201203j:plain

2014年度が 92.8%で一番高く、2009年度が89.3%で一番低いです。3ポイントぐらいしか違わないですね。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

経済センサスの事業所に関する集計データの分析7 - 仙台の面積の謎

 

www.crosshyou.info

 の続きです。

前回の分析で気になることがありました。仙台は従業者数が増加していたのに、面積従業者数が減少していたんです。面積従業者数は、従業者数 / 面積 で計算されますから分子の従業者数が増えているのに値が減っているということは、分母の面積が従業者数の伸び以上に増加しているということですからね。。。

ちょっと調べてみましょう。まずは、2012年、2016年のそれぞれの地域の面積を計算してみましょう。従業者数 / 面積従業者数 で計算します。

f:id:cross_hyou:20190219130716j:plain

2016年の面積です。単位は何かな?総従業者数は人で、面積従業者数は1平方キロメートル当たりの人数ですから、平方キロメートルですね。仙台は6504平方キロメートルです。

2012年の面積を計算します。

f:id:cross_hyou:20190219131405j:plain

仙台の面積は5968平方キロメートルです。やっぱり仙台の面積が増えていますね。

こんなことってあるのかな?というか、たぶん詳しく経済サンセスのデータを読めば書いてあるんでしょうけどね。

せっかくなので面積の伸び率も計算します。

f:id:cross_hyou:20190219132313j:plain

f:id:cross_hyou:20190219132325j:plain

おー。仙台よりも札幌や静岡浜松のほうが面積の伸びが高いですね。関東、広島、新潟は逆に縮んでいます。

今回は以上です。経済サンセスデータ、かなり興味深いですね。

 

経済センサスの事業所に関する集計データの分析6 - R言語で伸び率を計算する

 

www.crosshyou.info

 の続きです。

今回は2012年から2016年の各変数の伸び率を計算しようと思います。

まず、2016年の地域の並びと2012年の地域の並びが違っているので、これを揃えようと思います。

f:id:cross_hyou:20190218184349j:plain

f:id:cross_hyou:20190218184406j:plain

手順としては、2016年だけのデータフレーム、2012年だけのデータフレームを作成して、data2012[order(data2012$地域), ] のようにして地域の並び替えをしています。

これで、2016年のデータフレームも2012年のデータフレームも同じ並び順になりました。

伸び率を計算しましょう。3列目の事業所数から8列目の面積従業者数までの伸び率を計算します。

f:id:cross_hyou:20190218184837j:plain

100をかけてパーセント表示にしたほうがいいかな?round関数を使って、小数点3位までにしましょう。

f:id:cross_hyou:20190218185116j:plain

スッキリしましたね。あとは、地域を示す列を加えましょう。

f:id:cross_hyou:20190218185438j:plain

できました。summary関数で平均値などをみてみましょう。

f:id:cross_hyou:20190218185641j:plain

事業所数の平均は、マイナス0.5946ですが、総従業者数の平均はプラス2.3030となっています。男性従業者数の伸び率よりも女性従業者数の伸び率のほうが高いですね。

このデータフレームは14の地域があり、変数は6種類ありますから、データポイントは84データポイントあります。この84全部のデータポイントでヒストグラムを描いてみましょう。

f:id:cross_hyou:20190218190233j:plain

f:id:cross_hyou:20190218190246j:plain

0を中心に正規分布っぽい分布ですね。

それぞれの伸び率を高い順に表示しましょう。いちいちコマンドを入力するのは面倒なので、for関数を使って繰り返し処理をします。

f:id:cross_hyou:20190218191107j:plain

このような感じでコマンドを書きました。これを実行すると、以下のようになります。

f:id:cross_hyou:20190218191215j:plain

事業所数は仙台が一番伸びています。新潟が一番減少です。

f:id:cross_hyou:20190218191318j:plain

総事業者数も仙台が一番の伸びです。松山が一番の減少です。

f:id:cross_hyou:20190218191455j:plain

男性従業者数も仙台が一番の伸び、松山が一番の減少です。

f:id:cross_hyou:20190218191558j:plain

女性従業者数も仙台が一番の伸び、松山が一番の減少、というか松山だけが減少です。

f:id:cross_hyou:20190218191706j:plain

面積事業所数、これは1平方キロメートル当たりの事業所数です。関東が一番の伸びで、札幌が一番減少しています。

f:id:cross_hyou:20190218192002j:plain

面積従業者数、これは1平方キロメートル当たりの従業者数です。関東が一番の伸びで、札幌が一番の減少です。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

外資系企業動向調査の分析1 - R言語でアップロードしたファイルを整理する。

今回は、外資系企業動向調査のデータを分析しようと思います。

政府統計の総合窓口 e-Statのウェブサイトからデータを取得できます。

f:id:cross_hyou:20190216125936j:plain

外資系企業動向調査は、日本に進出している外資系企業を対象とした統計調査で、国や地方公共団体における今後の産業政策及び通商政策の推進に資するための基礎資料を得ることを目的として毎年実施されています。

外資系企業動向調査では、企業概要や、雇用の状況、売上高などの経営情報を、産業別に母国惜別、参入時期別などで集計し、結果を提供しています。また、日本で事業展開する上での魅力や阻害要因、今後一年間の雇用の見通しなども集計しています。

調査結果は、政府のみならず、産業界、学界等においても活用されています。

とのことです。

いろいろデータファイルがありましたが、このようなExcelファイルをダウンロードしました。

f:id:cross_hyou:20190216130518j:plain

いままでは、これをR言語にアップロードする前に整理・下降してからアップロードしていましたが、今回はこれをそのままアップロードして、R言語上で整理してみようと思います。できるかな?

まずは、read.csv関数でデータを読み込んでみましょう。

f:id:cross_hyou:20190216131048j:plain

なるほど、エクセルファイルそのままになっていますね。10行目からがデータですから、1行目から9行目を削除しましょう。

f:id:cross_hyou:20190216131338j:plain

少しよくなってきました。str関数でどんな構造になっているか確認しましょう。

f:id:cross_hyou:20190216132450j:plain

262 観測があって、21の変数となっています。X.6, X8, X10, X12, X.13, X14, X15, X.16, X.18の変数は「注釈」の列なのでいらないですね。削除します。

f:id:cross_hyou:20190216133431j:plain

いらない列を削除しましたが、まだ不要な列がありあそうです。1列目を見てみましょう。

f:id:cross_hyou:20190216134029j:plain

こうなりました。1列目も不要ですね。

2列目はどうでしょうか?

f:id:cross_hyou:20190216134236j:plain

こうなりました。2列目も不要ですね。

3列目は

f:id:cross_hyou:20190216134432j:plain

こうなりました。3列目は年度の列なので必要です。

4列目は

f:id:cross_hyou:20190216134553j:plain

こうなりました。あ、こっちを残せ3列目はいらないですね。

5列目は

f:id:cross_hyou:20190216134759j:plain

こうなりました。これはいるのかな?

6列目から14列目はhead関数で一気に見てみます。

f:id:cross_hyou:20190216135052j:plain

6列目は業種ですね。これを残せば、5列目は不要ですね。それと7列目も不要ですね。

ということで、不要な列は、1, 2, 3, 5, 7列が不要です。削除しましょう。

f:id:cross_hyou:20190216135531j:plain

だいぶ整理できてきました。

f:id:cross_hyou:20190216140003j:plain

colnames関数で変数名を確認すると、X.1, X.2~~となっています。これを1行目のように、年度、業種と変更したいですね。

f:id:cross_hyou:20190216140851j:plain

as.vector(unlist(df[1, ]))でデータフレームの1行目をベクトルに形式変換して、それをcolnamesに流し込んでいます。2番目の業種(2007年-)はただの業種にしてやりましょう。

f:id:cross_hyou:20190216141238j:plain

こうなりました。未設立・未操業をの・を削除しましょう。

f:id:cross_hyou:20190216141521j:plain

head関数で始めの数行を表示します。

f:id:cross_hyou:20190216142239j:plain

一行目がいらないですね。削除しましょう。

f:id:cross_hyou:20190216142421j:plain

だいぶ整理されてきました。行番号が11から始まっています。これを1からにしましょう。

f:id:cross_hyou:20190216142721j:plain

見栄えはこれで十分ですね。しかし、合計以降のデータが数値データとしてではなくて、ファクタとして格納されていますので、これを修正しなければなりません。

f:id:cross_hyou:20190216143553j:plain

このように、levels関数で確認すると、"", "ー", "***"が数字以外のファクタ水準ですね。どうしましょうか。。

合計を表示してみると、

f:id:cross_hyou:20190216145410j:plain

こうなります。***が4つありますね。まず、df$合計をファクタ型から文字列型に変換し、***を 0 に変換します。そうして文字列型を数値型に変換します。

f:id:cross_hyou:20190216150725j:plain

これでうまくいきました。他の変数も同じようにやってみましょう。

f:id:cross_hyou:20190216150937j:plain

df$操業中はこうなっています。ーと***があります。なので、-と***を 0 に変換する必要があります。

f:id:cross_hyou:20190216151655j:plain

できました。これと同じ作業をあと、5回もしなくてはいけません。関数を定義しましょう。こんな感じで定義しました。

f:id:cross_hyou:20190216152345j:plain

変換前のデータと変換後のデータを表示するようにしています。

それでは、早速やってみます。まずは、df$設立後初決算前です。

f:id:cross_hyou:20190216152621j:plain

やった、やった!大成功です!

この調子で残りの4つもやってしまいましょう。

f:id:cross_hyou:20190216152819j:plain

f:id:cross_hyou:20190216152937j:plain

f:id:cross_hyou:20190216153035j:plain

f:id:cross_hyou:20190216153149j:plain

これでやっと分析できる整理されたデータフレームになりました。summary関数で基本統計量を出しましょう。

f:id:cross_hyou:20190216153527j:plain

あれ!?? 関数で変換した変数がうまく数値型データに変換されていませんね。。

関数が悪かったのかな?あ、

df$設立後初決算前 <- factor_to_numeric(df$設立後初決算前)

とすればよかったのですね。やりなおします。

f:id:cross_hyou:20190216155904j:plain

f:id:cross_hyou:20190216155918j:plain

f:id:cross_hyou:20190216155930j:plain

f:id:cross_hyou:20190216155948j:plain

このようにやりなおしました。

それでは、summary関数で処理してみましょう。

f:id:cross_hyou:20190216160046j:plain

はい、できました!

これで次回から分析に使えます。

それにしても、今回思ったのは、Excel上で下処理してからR言語に読込むほうがはるかに楽ということです。疲れました。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

景気ウォッチャー調査データと株価の分析5 - R言語のseq関数で日付の列を作成する

 

www.crosshyou.info

 の続きです。

今回はR言語で日付の列を作成したいと思います。

 

Rクックブック

Rクックブック

 

 いつも参考にしているこの本を参考にして、日付を作成します。

seq関数で日付が作成できるようです。

分析しているデータの開始月と終了月を確認します。

head関数とtail関数で始めの数行と終わりの数行を表示します。

f:id:cross_hyou:20190216113010j:plain

開始月は2000年10月、終了月は2018年12月でした。

seq関数で日付のベクトルを作成するには、開始日(from), 終了日(to), 増分(by)を指定するといいようです。開始日を2000年10月25日、終了月を2008年12月25日にとりあえずして、by = "month" とするといいです。

f:id:cross_hyou:20190216113737j:plain

うまくできました。

str関数でクラスの確認をします。

f:id:cross_hyou:20190216114019j:plain

Dateクラスになっていることがわかります。

summary関数を適用したらどうなるのかな?やってみます。

f:id:cross_hyou:20190216114506j:plain

あ~、平均値とか計算できるんですね。

これと株価のグラフをplot関数で描いてみます。

f:id:cross_hyou:20190216114303j:plain

f:id:cross_hyou:20190216114316j:plain

株価はリーマンショックの後に急落していますよね。。

景気ウォッチャーのデータも同じようにグラフにしましょう。

f:id:cross_hyou:20190216115528j:plain

f:id:cross_hyou:20190216115542j:plain

こうなります。

今回はseq関数で日付のデータが作成できることを練習しました。