Rで(foreignパッケージを使用して) Stata データセットをインポートすると、インポートに無効な文字が含まれることがありますUTF-8。これだけでもかなり不快ですが、(パッケージJSONを使用して)オブジェクトを変換しようとするとすぐにすべてが壊れます。rjson
UTF-8文字列内の無効な文字を特定し、その後削除するにはどうすればよいですか?
iconvと it 引数を使用した別のソリューションsub: 文字列。NA でない場合 (ここでは '' に設定)、入力内の変換不可能なバイトを置き換えるために使用されます。
x <- "fa\xE7ile"
Encoding(x) <- "UTF-8"
iconv(x, "UTF-8", "UTF-8",sub='') ## replace any non UTF-8 by ''
"faile"
ここで、適切なエンコーディングを選択すると、次のことに注意してください。
x <- "fa\xE7ile"
Encoding(x) <- "latin1"
xx <- iconv(x, "latin1", "UTF-8",sub='')
facile
それらを削除する代わりに、を使用してそれらを UTF-8 文字列に変換することができますiconv。
require(foreign)
dat <- read.dta("data.dta")
for (j in seq_len(ncol(dat))) {
if (class(dat[, j]) == "factor")
levels(dat[, j]) <- iconv(levels(dat[, j]), from = "latin1", to = "UTF-8")
}
latin1あなたのケースでは、より適切なエンコンディングに置き換えることができます。私たちはあなたのデータにアクセスできないため、どちらがより適切かを知ることは困難です.