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で指定する。
分析をこれから勉強する方に、この記事が少しでも役に立てば幸いです。