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

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

外資系企業動向調査の分析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

 

です。