将R文件转换为缺少字符串值的Stata [英] Converting R file to Stata with missing string values

查看:11
本文介绍了将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

我有几个字符串,如Location、Name等,它们有可能导致此问题的缺失值。有没有办法处理这件事?

推荐答案

我以前多次遇到过此错误,很容易重现:

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)更好的解决方案是在haven包中使用write_dta

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

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

这篇关于将R文件转换为缺少字符串值的Stata的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆