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
あなたのケースでは、より適切なエンコンディングに置き換えることができます。私たちはあなたのデータにアクセスできないため、どちらがより適切かを知ることは困難です.