2014-12-19 307 views
2

将R文件转换为Stata格式时出现错误。我能够将数字转换成 Stata的文件,但是当我包括我的字符串得到以下错误:将R文件转换为缺少字符串值的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

你可以发布生成该错误的示例输入数据吗? –

+0

要清楚,如果“空字符串”被解释为“'”“'',那么Stata确实允许它。事实上,它对应于缺少对字符串变量的观察。 –

回答

10

我之前很多次了这个错误,而且很容易复制:

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月4日),更好的方法是在haven包使用write_dta

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

这样,塔塔正确读取字符串变量为字符串。