crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

乗用車ブランド通称名別順位のデータ分析1 - R言語のXMLパッケージのreadHTMLTable関数でWebから直接データを読み込む。

今回は、R言語のXMLパッケージのreadHTMLTable関数でWebの表形式のデータを直接読込んでみます。

参考図書は、Rクックブックです。

 

Rクックブック

Rクックブック

 

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

f:id:cross_hyou:20191109101702p:plain

次にlibrary関数でXMLパッケージを呼び出します。

f:id:cross_hyou:20191109101810p:plain

これで準備完了です。

今回は、

http://www.jada.or.jp/data/month/m-brand-ranking/

www.jada.or.jp

このWebサイトの表データを読込んでみようと思います。

f:id:cross_hyou:20191109102118p:plain

こういう表です。

readHTMLTable関数で読み込みたいWebサイトのURLを指定するだけでいいらしいです。やってみます。

f:id:cross_hyou:20191109102256p:plain

tblsにはWebサイトのすべての表が読み込まれています。何個の表があるかlength関数で確認します。

f:id:cross_hyou:20191109102429p:plain

7個の表があるようです。

一つ目の表がどんなものか見てみましょう。

f:id:cross_hyou:20191109102616p:plain

V1からV5までが2019年1月のデータ、V6が空欄で、V7からV11が2019年2月のデータですね。

str関数でデータ構造を見てみましょう。

f:id:cross_hyou:20191109103050p:plain

観測数が51、変数が11のデータフレーム構造ですね。すべての変数がファクタになっています。

分析しやすいように、2019年1月のデータフレーム、2019年2月のデータフレームに分割しましょう。

f:id:cross_hyou:20191109103545p:plain

V1は順位だからRank, V2は社名だからName, V3は会社名だからMaker, V4は販売台数だからNum, V5は前年比だからYoYに変数名を変更しましょう。

f:id:cross_hyou:20191109104000p:plain

Rankをファクタから数値に、Nameをファクタから文字列に、Numをファクタから数値に、YoYをファクタから数値にデータの型を変換したいですね。

Rankは変換というよりは、1:50に置き換えたほうが簡単ですね。NumとYoYはカンマがあるのでこのままでは変換できないですね。gsub関数でカンマを削除してみます。

f:id:cross_hyou:20191109105909p:plain

うまくカンマが削除できましたね。

それではデータ型を変換してみます。

f:id:cross_hyou:20191109110024p:plain
YoYにNAが4つあります。Webサイトを確認してみます。

f:id:cross_hyou:20191109110150p:plain

37位のインサイト、40位のCR-V、42位のES300H、43位のUX250Hの4つが空白または、(18-10)というデータなので前年比が無いですね。(18-10)というのは2018年の10月に販売開始という意味で、空白は今年販売開始なので前年比が無いということです。

is.na関数で確認してみます。

f:id:cross_hyou:20191109110654p:plain

たしかにそうですね。

これで2019年1月のデータフレームはできましたので、2019年2月のデータフレームも作成しましょう。

f:id:cross_hyou:20191109111611p:plain

いい感じですね。

Jan19にMonthという変数名でJanという値を持つ列を、Feb19にもMonthという変数名でFeb]という値を持つ列を加えます。

f:id:cross_hyou:20191109112123p:plain

それでは、Jan19とFeb19を一つのデータフレームにまとめましょう。rbind関数を使います。

f:id:cross_hyou:20191109112416p:plain

次回以降はこのjcarを分析しようと思います。自販連のWebサイトの構成が変わるといけないので、このjcarをCSVファイルとして書き出します。write.csv関数です。

f:id:cross_hyou:20191109113044p:plain

CSVファイルを読込みます。read.csv関数ですね。

f:id:cross_hyou:20191109113301p:plain

うまくできました!

今回は以上です。