连享会[4]-直播平台上线了!
直播:动态空间面板 | 空间双差分 SDID
下面是详细介绍 (如果你的问题已经解决,就不用看了)
Stata中文转码问题很难有一个让所有人满意的通用解法,对于我这样的 Stata 小白用户,一般是采取case by case的原则,以下是我最近处理 CGSS 数据过程中遇到的中文乱码问题和解决方法。在「Stata 学习-连享会」QQ 群中 (QQ号:225012362) 讨论后,连老师鼓励我把处理过程记录下来分享给大家,于是形成了这篇小文。
本文使用的版本是 Stata15,其中,CGSS 数据源于经管之家。
按照 Stata 官方的介绍,我们通常采用如下命令来转换 Stata 13 以前生成的文件:
cd "D:\data" //设置工作路径, 填入存放待转换数据的文件路径 *-开始转码 unicode analyze *//任何文件类型 unicode encoding set gb18030 unicode translate *clear //转码的时候数据不能打开
上述命令只能转换当前工作路径下的文件,对于子孙文件夹下的文件就无能为力了。此时可以使用连玉君老师之前编写的ua
以及uall
(项目地址:/arlionn/uall),一次性转换当前工作路径下的所有文件夹及子孙文件夹中的文件。
可以看到,并没有完全转码。Stata 提示File not translated because it contains unconvertable characters,
变量标签也是乱码:
此时,变量标签label乱码问题并没有解决,根据 Stata 的提示信息,把最后一行改成:
unicode retranslate *, invalid
此时,我们附加了invalid
选项,转码结果如下
完成上述操作后,大部分汉字乱码以及显示正常了,还是有个别带中文的数据产生乱码,如图
这时,Stata 会推荐如下命令:
unicode retranslate "CGSS.dta", transutf8unicode translate "CGSS.dta", transutf8
我试过,但没什么用。
最终,我采用如下命令顺利解决了问题:
. clear //执行下面的命令之前务必先清空内存,否则会提示错误信息 . cd "D:\data" //存放待转换数据的路径, 请务必事先备份一份数据 *-转码 . unicode retranslate *, invalid(ignore) transutf8 nodata replace*-路径设定
最终效果如下图所示:
结语
导致转码失败或者不完全的原因有很多,如果读者没时间了解 Stata 的深层架构,希望本文可以作为一种即用的方法惠及更多人。
4天直播-连享会-文本分析与爬虫专题