查看原文
其他

新一代的标签转码小能手

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:石   艳,中南财经政法大学统计与数学学院

本文编辑:王   彤

技术总编:余术玲

爬虫俱乐部云端课程

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元
导读


提到转码,不得不说unicode命令,因为这是 Stata中自带的一组有关编码的命令。除此之外,我们在向Stata导入数据和文件时的一些命令也有转码的功能,比如import delimited 等。但是这些命令在数据标签出现乱码时很可能会失效,所以今天带大家发掘一条标签转码的新道路——ustrfrom()函数以及label save命令。 
实例分析


首先我们打开一个数据集(读者朋友们可以在后台回复“标签转码”来获取相关示例数据),数据部分显示如下:

红色框选的部分本应显示的是字符串内容,而蓝色显示的本应该为值标签,在这部分却全部变成了乱码,我们甚至可以看到变量标签也出现了乱码。在这种情况下你是不是顿感“头大”,甚至想立马关闭,然后就此离去。先不要着急,看完以下的内容你就可以轻松面对这些“妖魔鬼怪”了。
01字符型变量转码
对字符型变量进行转码我们采取的是ustrfrom()函数,该函数能够将变量的编码转化为utf-8编码,但是它对数值型变量是不适用的。所以我们先把所有变量类型放在一个局部宏中,循环判断变量类型是否为字符型(str型),若是就进行转码。程序如下:
foreach v of varlist _all {
local type: type `v' //将变量类型进行存储
if strpos("`type'","str"){
replace `v' = ustrfrom(`v',"gb18030",1)
}
}
结果如下:

02变量标签的转码
对于变量标签的转码,我们同样使用ustrfrom(),先把所有变量标签放入局部宏中,对标签进行转码,最后将转码后的标签重新添加给变量,程序如下:
foreach v of varlist _all{
local lbl: var label `v' //将变量标签进行存储
local lbl = ustrfrom("`lbl'","gb18030",1) //对标签进行转码
label var `v' `"`lbl'"' //重新给变量添加转码后的标签
}
结果如下:

以上两部分都是对所有变量的属性进行操作,可以合并放在一个循环中执行。
03数值型变量值标签的转码
接下来要介绍的就是数值型变量值标签的转码,即数据中的蓝色乱码部分,这部分继续用ustrfrom()很难实现,和上面提到的有些不同。这时我们用到的就是label save命令,具体格式如下:
label save [lblname [lblname...]] using filename [, replace]
这条命令的意思是将值标签的定义保存在一个do文件中,其中lblname是用来指定要保存值标签的变量名,如果不进行指定,则默认保留全部。当我们得到这个do文件后,在Stata中选择用中文编码方式打开,运行即可完成标签转码工作。过程如下:
label save using mylabel.do,replace

部分结果如下:

如果结果中还有未成功修正的可以根据标签的定义重新进行手动定义修改,这样就可以逐步获得一个工整漂亮的数据集了。
今天的主要内容就是这些了,是不是看完了以后更有信心了呢,那就赶快拿起学到的神器让乱码”现形“吧!相信你可以在处理时一路披荆斩棘。




对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐

【爬虫实战】亚马逊网站Top100畅销书爬取

Json文件好帮手——JsonPath

数据转置pro之sxpose2
文件"搬家"小助手:mvfiles

pyecharts绘图——河流图展示

你知道MDPI期刊的热门题目吗?

文件合并你不行,mergemany来帮宁

         分组进行描述性统计的小技巧 --astx命令介绍

新年快乐|爬虫俱乐部2020年度总结

不能忘却的记忆| B站弹幕爬虫

Python中实现Excel的重复值提取
fileexists:告诉你“我”存在吗?

工作中一切困难的解决途径——motivatedolly

【爬虫实战】喜茶的门店都开在了哪里?

import delimited | 再也不用担心读入网页源代码“乱七芭蕉”了

如何简洁地列出指定属性的变量?ds命令来了!

如何在Python中进行描述性统计分析?

分析师和他们的雇主重视与管理层接触吗?——分析师参与盈余电话会议的研究

繁忙的董事与公司业绩:来自并购的证据
使用Python接口读取CSMAR数据
关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存