Rでデータ読み込み時に文字化けによるエラーが出たときの対処法

R/Rstudio

Rで分析のやり方を学ぶ際、書籍やudemyのような動画をもとに勉強する方も多いと思います。

テキストや動画教材の中には、サンプル用データを用意してくれていることがありますが、いざデータを読み込んでみようと思ったら、データが読み込めず、そのままつまづいてしまうということが多々あります。
エラーが単純な打ち間違いであれば正しい記述に直せばよいのですが、そうではない場合はデータの文字化けが生じている可能性があります。
この記事では、Rでデータを読み込む際に文字化けによるエラーが出てしまう時の対処法を紹介します。

なお、csvファイルの読み込み方については以下の記事でも紹介しています。

Rでデータ読み込み時に文字化けによるエラーが出たときの対処法

例えば、read.csv関数を使用してデータを読み込んだ際に、

Error in make.names(col.names, unique = TRUE) :  invalid multibyte string at ‘<90><ab><95><ca>’

なんていうエラーが出る場合があります。

このようなエラーが出ている場合は、文字化けが原因で読み込めていない可能性があります。

ほかにも、

  • ~に不正なマルチバイト文字があります
  • Error in nchar(x, “width”) : invalid multibyte string, element 1

と表示されたりすることもあります。

このような警告が出た場合は、文字化けにより、データをうまく読み込めていません。
これらのエラーが起きる多くのケースでは、使用しているPCで採用している文字コードとダウンロードしたファイルの文字コードが異なっているようです。

よくあるのが、ファイルはUTF-8が採用されていて、使用しているPC(windows)ではShift-JIS(ANSI)が標準になっているという場合です。

その場合は、Fileのエンコーディングを指定することで解決できます。
read.csv関数であれば、ファイル名のあとに、fileEncodingを指定します。

read.csv(“ファイル名.csv”, fileEncoding = “ファイルの文字コード”)

ファイルの文字コードに何が使われているかは、元のファイルがどの文字コードで作成されているのかを見ればわかります。

元のcsvファイルを開く際に、右クリック→「プログラムから開く」→「メモ帳」を選択します。
そうすると、メモ帳でcsvファイルの中身を開くことができますので、そのままファイル→「名前を付けて保存」を押すと、文字コードがどうなっているかがわかります。

例えば、今回エラーが出たファイルを見てみると文字コードがANSIとなっています。

ANSIは国際規格のことですが、windowsで採用しているANSIの文字コードがShift-JISのようですので、ANSI=Shift-JISととらえてよいと思います(多分)。

参考:IT用語辞典「ANSI 米国国家規格協会

そのため、ファイルの文字コードとして、ANSIを選択すればよさそうです。
ただ、ややこしいことに文字コードANSIの正式名称は、「CP932」(コードページ932)と呼ばれるもののようです。

参考:IT用語辞典「CP932

結論として、ファイルの文字コードはfileEncoding=”cp932”にすればよさそうです。
dat<-read.csv(“datafile.csv”,fileEncoding=”cp932”)

エンコードを指定すると問題なくデータが読み込めました。
また、今回とは逆に、ファイルがUTF-8で作成されており、PCのデフォルトの文字コードがShift-JISの場合は、fileEncoding=”UTF-8”にすると問題なく読み込めると思います。

国内の多くのWindowsPCであれば、おそらく問題として出てくるのはこのケースかと思われます。
(レアケースですが、私が使っているHUAWEIのPCの場合、Macと同じようにutf-8がデフォルトのようでした)

readr関数の場合はlocaleで指定する。

Rの標準関数ではないですが、tidyverseパッケージ内のread_csv関数を使ってcsvファイルを読み込みたい場合もあると思います。

read_csv関数の場合は、fileEncodingではなく、locale関数で指定することができます。
read_csv(“データファイル名.csv”, locale = locale (encoding =”ファイルの文字コード”)

こちらも例によって、ファイルの文字コードに併せて、utf-8もしくはcp932(ANSI(Shift-JIS)を指定すると良いです。

RStudioのデフォルトの文字コードの確認の仕方

最後に、R(RStudio)側の文字コードの確認の仕方についても紹介します。

RStudioを開いたら、「Tools」→ [Grobal options…」を開き、そこから、左側の項目の上から2番目にある「Code」を選択します。

Codeに関する設定の中で、「Saving」(中央上にある項目のうちちょうど真ん中)を見てみると、Default text encoding という設定があります。

この設定がRで読み込む際のデフォルトの文字コードになります。
ここがデータファイルと不一致であると文字化けが生じてしまいます。

個人的には、ここをUTF-8にしておくことで、エラーが出た場合、ファイルに日本語文字が使用されていて、SHIFT-JISなんだな、とある程度見当がつくため、WindowsPCの場合でも、UTF-8に設定していたほうが、良いと考えております。

Change…のボタンからデフォルトの文字コードを設定できますので、自分の使いやすい設定にすると良いと思います。

まとめ

この記事では、Rでデータを読み込む際に文字化けによるエラーが出てしまう時の対処法を紹介しました。

  • ファイルの読み込みエラーが出たら文字コードのエラーを疑う
  • 文字コードは大体”utf-8”か”Shift-JIS(cp932)”の違い
  • 通常関数であれば、fileEncoding、tidyverseパッケージの場合はlocaleで指定する。

分析をこれから勉強する方に、この記事が少しでも役に立てば幸いです。

タイトルとURLをコピーしました