将R文件转换为缺少字符串值的Stata

时间:2014-12-19 21:20:52

标签: r stata

将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

我有很少的字符串,如位置,名称等,它们缺少值,可能会导致此问题。有办法处理这个吗?

1 个答案:

答案 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可以正确地将字符串变量作为字符串读取。