今回は、R言語のXMLパッケージのreadHTMLTable関数でWebの表形式のデータを直接読込んでみます。
参考図書は、Rクックブックです。
- 作者: Paul Teetor,大橋真也,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/12/22
- メディア: 大型本
- 購入: 9人 クリック: 61回
- この商品を含むブログ (13件) を見る
まず、XMLパッケージをinstall.packages関数でインストールします。
次にlibrary関数でXMLパッケージを呼び出します。
これで準備完了です。
今回は、
http://www.jada.or.jp/data/month/m-brand-ranking/
このWebサイトの表データを読込んでみようと思います。
こういう表です。
readHTMLTable関数で読み込みたいWebサイトのURLを指定するだけでいいらしいです。やってみます。
tblsにはWebサイトのすべての表が読み込まれています。何個の表があるかlength関数で確認します。
7個の表があるようです。
一つ目の表がどんなものか見てみましょう。
V1からV5までが2019年1月のデータ、V6が空欄で、V7からV11が2019年2月のデータですね。
str関数でデータ構造を見てみましょう。
観測数が51、変数が11のデータフレーム構造ですね。すべての変数がファクタになっています。
分析しやすいように、2019年1月のデータフレーム、2019年2月のデータフレームに分割しましょう。
V1は順位だからRank, V2は社名だからName, V3は会社名だからMaker, V4は販売台数だからNum, V5は前年比だからYoYに変数名を変更しましょう。
Rankをファクタから数値に、Nameをファクタから文字列に、Numをファクタから数値に、YoYをファクタから数値にデータの型を変換したいですね。
Rankは変換というよりは、1:50に置き換えたほうが簡単ですね。NumとYoYはカンマがあるのでこのままでは変換できないですね。gsub関数でカンマを削除してみます。
うまくカンマが削除できましたね。
それではデータ型を変換してみます。
YoYにNAが4つあります。Webサイトを確認してみます。
37位のインサイト、40位のCR-V、42位のES300H、43位のUX250Hの4つが空白または、(18-10)というデータなので前年比が無いですね。(18-10)というのは2018年の10月に販売開始という意味で、空白は今年販売開始なので前年比が無いということです。
is.na関数で確認してみます。
たしかにそうですね。
これで2019年1月のデータフレームはできましたので、2019年2月のデータフレームも作成しましょう。
いい感じですね。
Jan19にMonthという変数名でJanという値を持つ列を、Feb19にもMonthという変数名でFeb]という値を持つ列を加えます。
それでは、Jan19とFeb19を一つのデータフレームにまとめましょう。rbind関数を使います。
次回以降はこのjcarを分析しようと思います。自販連のWebサイトの構成が変わるといけないので、このjcarをCSVファイルとして書き出します。write.csv関数です。
CSVファイルを読込みます。read.csv関数ですね。
うまくできました!
今回は以上です。