我在将 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
被冻结了,对此您无能为力。
Update:(2015-12-04) 更好的解决方案是使用write_dta
in the haven
包裹:
library(haven)
test <- data.frame(a = "", b = 1, stringsAsFactors = FALSE)
write_dta(test, 'example.dta')
这样,Stata 就可以将字符串变量正确地读取为字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)