LoginSignup
0
0

【R】read.csvでcsvを読み込むときのエンコーディング指定について

Last updated at Posted at 2023-12-11

image.png
上記のようなcsvファイルをread.csvで開こうとしたら以下のようなメッセージが返ってきて、読み込めなかったときの対策
元ファイルは

e-Stat国勢調査、統計データ小地域を使用。

まずはシンプルにread.csvで読み込んでみる。

  • 実行内容
read.csv(csvfile.csv)
  • 結果
Error in type.convert.default(data[[i]], as.is = as.is[i], dec = dec,  : 
  invalid multibyte string at '<8e>D<96>y<8e>s<92><86><89><9b><8b><e6>'

ナンケラーが返ってきて、読み込み失敗

shift-jis指定で開く

データの値に日本語が入っているので、エンコーディングを指定すれば良いと思いfileEncoding="shift-jis"を追加してみる。

  • 実行内容
read.csv(csvfile.csv,fileEncoding="shift-jis")
  • 結果
    一応、ファイルは読み込めるものの以下のようなWarning messageが。
Warning message:
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  invalid input found on input connection csvfile.csv'

さらに元のcsvの列数は25700もあったのに、R上で列数を確認すると24245に減っていた。
image.png
image.png

CP932指定で開く

  • 実行内容
read.csv(file_list[1],fileEncoding="CP932")
  • 結果
    warning messageも出ずに、列数も正しく読み込んでくれました。
    image.png

結論

shift-jisとcp932の詳しい違いは以下を参照
https://qiita.com/kasei-san/items/cfb993786153231e5413

shift-jisのcp932拡張版と言うことで、shift-jisではなくCP932で指定する方が安心。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0