查看原文
其他

Stata如何实现变量快速拼接?

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

本文作者:杨慧琳

文字编辑:杨长青

技术总编:司海涛

好消息!!!爬虫俱乐部将于2019年7月5日至7月8日在武汉举行首期Python编程技术定制培训。本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python爬虫技术,并明确未来更进一步的学习方向。

详细培训大纲及报名方式,请点击文末阅读原文呦~

在数据处理中,我们可能需要将多个变量拼接为一个变量。这一操作可以通过replace或gen命令实现。但是,这种方法仅适用于字符型变量的拼接。当各个变量数据类型不同时,Stata将提示“type mismatch”的错误。

例如,当前路径下存在如下数据集:

使用describe命令查看各个变量类型,如下:

可知,变量company和make均为字符型,gear_ratio为浮点型,foreign为字节型,其余的为整值型。我们使用gen命令将变量company和make拼接在一起,公司名和人名用冒号隔开,执行程序与结果如下:

gen com_make = company + ":" + make

这样,两个字符型变量便拼接在一起了。

但在实际操作中,我们可能还需要拼接更多的变量,较为直接的处理思路是现将变量转换为字符型,其次逐一拼接。但这种方法较为繁琐,尤其是存在多个拼接变量且需添加分隔符时更加难以操作。那么,有没有什么命令可以实现变量快速拼接,并在各个变量间添加分隔符呢?我们介绍两种简单方法。

1、catenate命令

catenate命令可以将字符型或数值型变量拼接在一起,并生成一个新的字符型变量。在拼接过程中,可自动转化变量类型,并可定义变量拼接范围。其基本语法如下:

catenate newvar = varlist [if exp] [in range] [,punct(punctchars) ]

其中,punct(punctchars)选项用于定义拼接变量间的分隔符,默认以空格分隔。当然,也可使用punct(no)选项,表示不使用分隔符。

在本例中,我们尝试将数据集中前5行的所有变量进行拼接,并以逗号分隔。执行程序与结果如下:

catenate v = company make price mpg weight length gear_ratio foreign in 1/5, p(,)

2、concat()函数

concat()函数是egen命令自带的一个函数,也可以实现不同类型变量的拼接。其基本语法如下:

concat(varlist) [, format(%fmt) decode maxlength(#)punct(pchars)]

其中,format(%fmt)选项可用于定义数值型变量在拼接后的显示样式;decode选择可进行解码;maxlength()选项用于定义变量标签最大长度。在默认情况下,各个变量紧密连接,中间不存在空格等符号。

在本例中,我们依然将所有变量进行拼接,并设置数值型变量的显示样式为%5.3f,变量之间以分号分隔。执行程序与运行结果如下:

egen v1 = concat(company make price mpg weight length gear_ratio foreign), format(%5.3f) p(;)

通过以上两种方法,我们便实现了变量的快速拼接。尤其是当变量名具有一定规律性,如v1、v2、v3…时,采用以上方法将更加高效,仅需执行“catenate v = v*, p(,)” 或“egen v =concat(v*), p(,)”即可,极大简化了数据处理程序。

对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

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

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

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