質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

2回答

1194閲覧

Rでunicodeの文字を正しく直したい

usugita_san

総合スコア228

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2021/02/22 05:08

編集2021/02/22 08:24

Windows10 64bit環境で、Rの4.0.4を使用しています。
RStudioでRスクリプトを実行しています。
odbcを経由してデータを取得したのですが、そのデータの中に

"\u5927\u4e95"

というデータが存在します。
正しくは「大井」です。
これを正しく「大井」に変換するにはどうしたらいいでしょうか?

こちらのサイトを参考に実験してみました。
https://uribo.hatenablog.com/entry/2017/02/18/120051

実験に使用したデータは以下のような状態です。

head(d$race_track_name,1)
[1] "\u5927\u4e95"
class(d$race_track_name)
[1] "character"

前述したサイトにはこのようなコードが記載されています。

R

1d %<>% dplyr::mutate_if(is.character, stringi::stri_conv, from = "sjis", to = "UTF-8")

これは実行できません。以下のようなエラーメッセージが発生します。

Error in d %<>% dplyr::mutate_if(is.character, stringi::stri_conv, from = "sjis", : could not find function "%<>%"

恐らくこのように実行するのだと予想し、修正して実行しました。

R

1d %>% dplyr::mutate_if(is.character, stringi::stri_conv, from = "sjis", to = "UTF-8")

その後、データがどうなったか確認してみました。

head(d$race_track_name,1)

[1] "\u5927\u4e95"

class(d$race_track_name)

[1] "character"

どうも変わっていないようです。文字コードの指定が間違っているのかもしれないのですが、何に指定するべきなのか調査方法が解りません。

解決方法か、調査方法が解るとありがたいです。
よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

OSもライブラリも書いてないので具体例は示せませんが、以下のようなページを参考に対処を考えてみてはどうでしょうか。

ODBCで取得したデータの文字化けを解決する - cucumber flesh

投稿2021/02/22 07:32

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usugita_san

2021/02/22 08:25

ありがとうございます。そちらのサイトを参考に実験してみました。 実験結果と、環境など前提条件を掲載してみました。
usugita_san

2021/02/22 09:39

どうも、文字自体が対応できないようでした。 こちらを参考に実験してみました。 https://kitamix.net/archives/convert-to-unicode-with-stringr-in-r/1089 > stri_unescape_unicode(stri_escape_unicode("こんにちは")) > [1] "こんにちは" > stri_unescape_unicode(stri_escape_unicode("大井")) > [1] "\u5927\u4e95" 以上の成果を追記して自己解決としたいと思います。 ありがとうございました。
guest

0

自己解決

文字自体が対応できないようです。

こちらを参考に実験してみました。
https://kitamix.net/archives/convert-to-unicode-with-stringr-in-r/1089

stri_unescape_unicode(stri_escape_unicode("こんにちは"))
[1] "こんにちは"
stri_unescape_unicode(stri_escape_unicode("大井"))
[1] "\u5927\u4e95"

stri_unescape_unicode の説明を見ると気になる記述がありました。
https://www.rdocumentation.org/packages/stringi/versions/1.5.3/topics/stri_unescape_unicode

Note that some versions of R on Windows cannot handle characters defined with \UXXXXXXXX. We are working on that.

恐らく、現在のRでは実現できないのだろうと思います。
ありがとうございました。

投稿2021/02/22 09:41

usugita_san

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問