将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
我有很少的字符串,如位置,名称等,它们缺少值,可能会导致此问题。有办法处理这个吗?
答案 0 :(得分:11)
我以前曾多次犯过此错误,并且很容易重现:
library(foreign)
test <- data.frame(a = "", b = 1, stringsAsFactors = FALSE)
write.dta(test, 'example.dta')
一种解决方案是使用因子变量而不是字符变量,例如,
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可以正确地将字符串变量作为字符串读取。