Rでcsvファイルをread.tableすると文字化けするので文字コード指定


このエントリーをはてなブックマークに追加

Rによるやさしい統計学 | 山田 剛史, 杉澤 武俊, 村井 潤一郎 |本 | 通販 | Amazonを読んでみてる

第9章でデータの外部ファイルを読み込むと出てきて

指導法データを読み込むのだが面倒なのでネット上に置いてくれている下記リンク先から指導法データファイルをダウンロード

社会統計演習

が、csvファイルの読み込みの時に文字コードエラーが起きてしまうので解決させた

環境は

  • Mac OSX Sierra 10.12.5
  • R studio Version 1.0.136



fileEncoding = “Shift_JIS” を指定してやればよい


RのUTF-8で漢字などが入っている場合read.tableができない - Qiita

Rでcsvファイルを読み込もうとすると、Macだと文字化けする時があるっぽい(文字コードの影響)

下記のようにfileEncoding='Shift_JIS'を指定すること

また、適切にフォーマットするために色々オプションを指定してやる

1
f <- read.table('/path/to/file.csv',sep=",", skip=0, header=T, stringsAsFactors=T, fileEncoding = "Shift_JIS")

カレントディレクトリに shidouhou.csv ファイルを置いてるなら下記になる

1
f <- read.table("shidouhou.csv",sep=",", skip=0, header=T, stringsAsFactors=T, fileEncoding = "Shift_JIS")


またその他ついてるオプションの意味は簡単には下記

  • sep=”,”
    • カンマ(,)で区切る
    • デフォルトは “”
      • 単数および複数の空白、タブ、改行
  • header=T
    • header=TRUEのこと
    • 1行目をヘッダー(データの名前)として扱うかどうか、TRUEにすると1行目がヘッダー扱いになる
  • skip=0
    • dataファイルの行で最初の何行かを飛ばすかを整数値で指定
    • ファイルの1行目から読み込むなら0を指定するかskipをそもそも指定しなくて大丈夫
  • stringsAsFactors=T
  • fileEncoding = “Shift_JIS”
    • fileを読み込む時に Shift_JIS で読み込む
    • Macだと”UTF-8”で読み込むとファイルによってはエラーとなった
    • その場合はShift_JISで指定してやるとよい


ここで、stringAsFactors=Tとしているがこれは例えばRによるやさしい統計学 | 山田 剛史, 杉澤 武俊, 村井 潤一郎 |本 | 通販 | Amazonの第9章, 9.3【第3章の分析】のところで

ファイ係数を求める場合には要素がfactorでないと変換できなくてエラーとなってしまうので

ひとまずTRUEにしている

Rを使って統計処理する時はもしかしたらstringAsFactorsはTRUEのほうがいいのかもしれない


以下は補足など

encoding=”UTF-8”などは読み込んだ後の文字コードの指定

らしい

RのUTF-8で漢字などが入っている場合read.tableができない - Qiita

なのでファイルを読み込む時の指定は fileEncoding で指定してやらないとっぽい


ダウンロードしたファイルの文字コードはShift_JISだった

社会統計演習
からダウンロードしたファイルを、nkfコマンドを使って文字コードを確認したところShift_JISだった

1
2
$ nkf -g shidouhou.csv
Shift_JIS

nkfコマンドの使い方などは下記を参考にした

macでファイルの文字コードを変換する『nkfコマンド』の使い方とオプション一覧 | かわたま.net

ひとまず、ファイル自体の文字コードがShift_JISなので、read.tableするときに fileEncoding = "Shift_JIS" してやらないといけないっぽい

おそらくcsvファイルがWindowsで作成されたものだからだと思われる、Macで作成されたものならUTF-8なのかもしれないので

安易にfileEncoding = "Shift_JIS"を指定すると逆に文字化けすることもあるかもしれない


このエントリーをはてなブックマークに追加