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

标签 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

我有几个字符串,如位置、名称等,其中缺少可能导致此问题的值。有没有办法处理这个问题? .

最佳答案

我以前多次出现此错误,并且很容易重现:

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_dtahaven包裹:
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/

相关文章:

r - 在 R 中的 Cox 回归后将预测的危险比列添加到数据帧

R - 是否可以优化或简化对 grepl() 的多次调用?

r - 为什么我不能将选择方程中的因变量用作结果方程中的自变量?

r - 在 R 中的函数中保存 Stata 文件

Stata:使用reshape命令将大量变量转换为长格式

r - Hunspell包: spell checking for French language

R - 从大到小排列

python - pandas 和 Stata 13 个文件

algorithm - 如何在 Stata 中获得最大运行?

Stata - 在循环中动态定义变量名