最近,小编收到湖南大学美女苏老师的咨询,苏老师希望将两个数据进行横向合并。小编最乐意给读者解答问题啦,所以今天的推文就让小编通过stata这个神器来帮忙解决这个问题,帅哥美女快来一起涨姿势。
首先笔者对苏老师给的两组数据进行观察,第一组数据有两个指标分别为是city和hospital
第二组数据包含的指标分别有city_code city_label total_pop match_city
如何将这两组数据进行横向匹配?那首先需要对两组数据分别进行处理,第一步我们需要将第一组的数据导入Stata然后进行数据整理:
clear
set more off
cd "D:\爬虫俱乐部"
use hospital.dta, clear
通过观察我们发现第一组数据中city指标中有数字和点这样的组合,例如:
所以我们使用正则表达式的替换函数regexr():
replace city = regexr(city,"[0-9]+\.","")
其中[0-9]+是用来匹配数字
而\.是用来匹配点符号
通过命令,可以将数字和点这样的组合替换为没有数字和点的组合。
如果我们将其读入到stata14中就会发现字符型数据变成了乱码。
clear
set more off
cd "D:\爬虫俱乐部”
use hospital.dta, clear
此时我们就需要借用stata14中的unicode命令来完成转码,这个命令有两个条件:第一,使用该命令之前,需要清空数据;第二,我们转码的文件必须是在当前工作路径中的文件。
在转码前我们需要设置要转换的文件编码,首先通过help encoding来查看可以转换的编码,然后用unicode encoding set来进行设置。这里我们需要设置gb18030,进行转码,通过命令:
unicode encoding set gb18030
接着我们使用unicode translate来解决这个问题:
unicode translate hospital.dta,transutf8
use hospital.dta, clear
然后通过stata14特有的ustrregexra命令,可以将数字和点这样的组合替换为没有数字和点的组合,结果显示如下:
replace city =ustrregexra(city,"\d+\.","")
这样就和stata13中替换函数regexr()的输出结果相同了。如果有读者对转码和stata14字符串函数的提取和替换以及正则表达式的应用感兴趣,在我们公众号之前的推文中都有过详细介绍,希望之前小推文中的内容能更有助于你们的理解。
接下来stata13和stata14处理的过程一样,通过命令sort city可以将数据按照city排序:
save hospital.dta,replace
然后命名hospital格式为stata格式并将其保存到设定路径中为备用。
第二步我们对第二组数据进行处理。同样,我们先将第二组数据导入stata中:
use pop.dta, clear
通过观察我们不难发现第二组数据city_label与第一组city所对应的数据相同,但变量名称不一致。为了能让stata大神准确识别,我们对city_label变量名称进行重命名:
rename city_label city
然后对city进行排序:
sort city
在显示排序结果中,笔者发现第一行数据为缺失值。
所以我们需要使用命令将第一行drop掉:
drop in 1
最后就是见证奇迹的时刻,我们通过merge命令进行拼接:
merge city using hospital.dta
这样我们就成功将两个数据横向合并啦,美女苏老师提到的数据横向合并问题就轻松解决了。遇到同样问题的小伙伴可以试一试推文中的方法,同时也希望有更多读者参加我们的有问必答环节,爬虫俱乐部的我们会使出洪荒之力来给你们解决各种问题哒~还在观望什么,不要998,只要关注“爬虫俱乐部”公众号就能把实用的stata命令带回家~
我们团队原来的微信公众号是“数据处理援助中心”,现在正式搬家到“爬虫俱乐部”,欢迎关注。新的公众号开始,我们推出有问必答栏目,对您提出的问题,我们会尽力回答,并通过推文的形式进行发布。我们也欢迎各位粉丝向公众号投稿。
(编辑 @徐苾雯)
欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:xueyuan19920310@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)如果大家遇到关于stata处理分析数据的问题,也可以给该邮箱写邮件,邮件名称为“提问”+“问题名称或者关键词”,我们会在后期的推文里给予解答。
长按二维码关注公众号
微信扫一扫
关注该公众号