1. ホーム
  2. r

[解決済み] 文字列の値が欠落しているRファイルをStataに変換する

2022-02-26 15:04:21

質問

RファイルをStata形式に変換する際にエラーが発生します。数値の変換はできましたが Stataファイルですが、文字列を含めると以下のエラーが発生します。

library(foreign)
write.dta(newdata, "X.dta")

Error in write.dta(newdata, "X.dta") : 
  empty string is not valid in Stata's documented format

場所や名前など、値が欠落している文字列がいくつかあり、それがこの問題を引き起こしていると思われます。これを処理する方法はあるのでしょうか?.

解決方法は?

このエラーは以前から何度も発生しており、再現も簡単です。

library(foreign)
test <- data.frame(a = "", b = 1, stringsAsFactors = FALSE)
write.dta(test, 'example.dta')

解決策の1つは、文字変数の代わりに因子変数を使用することです。

for (colname in names(test)) {
  if (is.character(test[[colname]])) {
    test[[colname]] <- as.factor(test[[colname]])
  }
}

もう一つは、空の文字列を何か別のものに変えて、Stataで元に戻すことです。

これは純粋に write.dta なぜなら、Stataは空の文字列でも全く問題ないからです。しかし foreign はフリーズしているので、どうしようもありません。

更新してください。 (2015-12-04) より良い解決策としては write_dta の中に haven パッケージに格納されます。

library(haven)
test <- data.frame(a = "", b = 1, stringsAsFactors = FALSE)
write_dta(test, 'example.dta')

こうすることで、Stataは文字列変数を文字列として適切に読み込むことができます。