jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

R言語でインターネットからファイルをダウンロードする

最近、オープンデータと呼ばれる情報公開の動きがネット上で見られるようになりました。(まだまだたくさんとはいえませんが)これを利用して何か分析したいとしましょう。まずブラウザを経由してデータをダウンロードします。次にエクセルなどでファイルの形式を整えます。そしてやっと、R言語でファイルを開き、解析…。いえいえ、R言語だけでもやれることがあるはず!今回はR言語だけでファイルをネットからダウンロードし、ファイルを開くやり方とポイントを紹介します。

インターネットからファイルをダウンロードする

ファイルをダウンロードする関数はdownload.file()です。詳しくはヘルプを見てほしいのですが、2つの引数を必ず指定します。1つはurl。これでインターネット上のファイルを指定します。もう1つはdestfileこちらは、ダウンロードしたファイルの保存先とファイル名を指定します。ファイル名はダウンロード先のファイル名と一致していなくても構いません。

curl <- "http://housyasen.taiki.go.jp/csv/000_DayList_01.csv"
cdestfile <- "C:/temp/DL.csv"
download.file(curl,cdestfile)

ファイルの形式にあわせてファイルを読み込む

ファイルのダウンロードに成功したら、次はR言語にファイルを読み込みます。いろいろな方法が考えられますが、ここではread.table()を使います。この関数では、読みこむファイル名を必ず指定します。また、列の区切り文字を指定にはsepを指定します。タブ区切りなら"\t"カンマ区切りなら","です。欠損値があっても読み込みを続けるにはfillをTRUEに指定します。1行目に変数名が割り当てられている場合はheaderをTRUEにします。その他に文字列のマーカーをquoteで指定(デフォルトは\"')したり、コメントアウトのマーカーをcomment.charで指定(デフォルトは#)できます。

inputdata <- read.table("DL.csv",sep= ",", fill = TRUE, header = TRUE, quote = "", comment.char = "")

ファイルのエンコーディングに注意

ファイルがどんな形式で保存されているのかを確認し、それにあった形式で読み込むことが重要です。read.table()ではencodingで指定できます。Windowsの場合、デフォルトはCP932です。utf-8で保存されているファイルを読み込むにはencoding= "UTF-8"と指定します。

inputdata2 <- read.table("DL.csv", fill = TRUE, header = TRUE, encoding = "UTF-8")