将 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')
一种解决方案是使用因子变量而不是字符变量,例如,
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 将字符串变量正确读取为字符串。
关于r - 将 R 文件转换为缺少字符串值的 Stata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574055/