查看原文
其他

提升效率的利器——如何用labvarch批量修改变量标签

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

本文作者:王   歌

文字编辑:朱巧利

技术总编:张计宝

导读

变量的标签可以使我们迅速了解变量的含义。在日常使用Stata时,我们有时为了表达上的需要,可能会出现要将一些变量的标签修改成具有某种统一格式的情况,比如让标签中所有的字母都大写,或者给所有的标签都加上某个前缀来表明这些变量的共有特征,等等。这个时候如果我们逐个的去修改,不仅费时费力,还容易因为标签太多而眼花缭乱、有所遗漏。作为一款成(tie)熟(xin)的软件,我们的Stata当然会为大家排忧解难啦,今天我们介绍的就是如何利用labvarch命令来批量修改变量的标签。

labvarch是一个外部命令,在使用之前要先通过“ssc install labvarch”安装哦。


命令介绍 



在安装完成之后,我们可以通过help命令来查看它的基本用法。labvarch即change variable labels,是用来改变一组变量的标签,在未指定变量的情况下,默认改变所有变量标签。其基本语法如下:

labvarch [varlist][ , transformation_option display test symbol(str) ]

labvarch命令中必须指定选项transformation_option,这一选项主要有以下几种选择:

(1)upper:将标签中的每个字母都转换为大写;
(2)lower:将标签中的每个字母都转换为小写;
(3)prefix(str):给变量加上前缀str;
(4)postfix(str):给变量加上后缀str,也可以使用suffix(str),两者同义;
(5)presub(str1 str2):将标签开头的str1替换为str2,str2接受空值;
(6)postsub(str1 str2):将标签结尾的str1替换为str2,str2接受空值;
(7)before(str):在包含“str”的标签中,删除包含str在内及str之后的所有内容;
(8)after(str):在包含“str”的标签中,删除包含str在内及str之前的所有内容;
(9)from(str):在包含“str”的标签中,删除str之前的所有内容;
(10)to(str):在包含“str”的标签中,删除str之后的所有内容;
(11)subst(str1 str2):将标签中的str1全部替换为str2,str2接受空值;
(12)predrop(#):删除标签的前#个字符;
(13)postdrop(#):删除标签的后#个字符;
(14)trim(#):保留标签的前#个字符,删掉其余的字符,若使用trim(0)则删除该标签;
(15)map(string_exp):指定从现有变量名称构建新变量标签的规则。默认情况下,@是现有名称的占位符,可以通过symbol()选项来更改占位符。

其他三个选项中,display选项会在运行后显示被更改的标签所在变量的信息;test选项不对标签进行实际的更改,只将更改的结果输出显示到结果窗口;而symbol(str)用来更改占位符,一般很少使用。


应用举例


在熟悉了命令的用法之后,我们基于auto数据来看一些小例子,加深一下对这个命令的理解。


例子1 大小写与前后缀


首先我们导入数据,并查看一下原始的变量标签,程序如下:

clear allsysuse autodes    //查看原始标签
变量名、标签等信息如下图:



然后我们使用upper将全部变量的标签转换为大写,并使用display显示结果,程序如下:

labvarch *,upper display
结果如下图:



可以看到标签的每个字母都是大写的格式。进一步,我们对int类型的变量,在标签中加入“int-”的前缀,程序如下:
labvarch price mpg rep78 trunk weight length turn displacement,prefix(int-)des
运行结果如下图:



为了与非int类型变量的标签形成对比,这里我们没有直接用display选项,从结果上我们可以看到标签的变化。


例子2 标签内容的替换


在上一个例子的基础上,我们把前面有int-字符串的标签里的int-都去掉,程序如下:

labvarch *,presub(int- ) display
结果如下图:



这里我们将其替换为空值时,可以不输入str2,即如上面程序所示,只输入被替换字符,也可以传入""来表示,两者结果相同。这在选项subst(str1 str2)也是一样的,不再演示。

例子3 标签内容的删除


我们还是以例子1的结果为基础,比较一下使用before、after、from和to选项删除的内容的差别,这里我们传入的字符串均为int-,具体程序如下:

labvarch *,before(int-) display //以下四行命令在运行每一行前都要先运行示例1labvarch *,after(int-) displaylabvarch *,from(int-) displaylabvarch *,to(int-) display
四次运行结果如下(这里只显示变量标签部分以示区别):



可以看到,含before选项的命令将int-以及其后的全部内容都删除了;含after选项的命令则删去了int-及其之前(这里为空)的内容;由于from是删除输入的字符串之前、不包含该字符串本身的内容,因此运行含from选项的命令后第三张图的结果与运行命令之前相比没有改变;与之相反,运行含to选项的命令后删除了int-之后的内容。因此我们在使用时要注意区分。

而我们使用trim(0)不保留字符时,程序如下:

labvarch *,trim(0) display
结果如下:



此时可以看到,所有的变量标签都被删除掉了。


例子4 重新设定标签规则


上个例子我们已经将所有的标签都清空了,下面我们在此基础上重新设定变量标签。假设我们要求所有标签以一个感叹号结尾,程序如下:

labvarch *,map(@!) display
结果如下:



labvarch命令默认以@作为变量名的占位符,因此我们只要传入@!作为map()选项的参数就可以得到想要的结果了,当然如果想要变更占位符可以使用symbol()选项,这里不再演示。

以上就是今天我们对labvarch命令的介绍,你学会了吗?当你要批量修改变量的标签时,千万不要忘记使用它哦,一定会使你的效率up up!







对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
二进制序列类型——bytes()、bytearray()
今日头条海外疫情数据爬取
anythingtodate带你轻松处理日期
_variables介绍
查询12306车次信息
海外疫情仍严峻,劝君更在家中留
国外疫情怎么看?——实时新闻获真知

基于贝叶斯定理的算法——朴素贝叶斯分类

中国知网爬虫(CNKI) 批量下载PDF格式论文
sencode命令介绍
Ftools命令组之fisid命令和fsort命令介绍
“抽丝剥茧”,层层下分——机器学习基本算法之决策树

爬取东方财富网当日股票交易情况

stata调用python爬取时间数据——借他山之石以攻玉

全国31省GDP排行强势登场!
接力《发哨子的人》Stata版
批量实现WORD转PDF

关于我们



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

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

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

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