查看原文
其他

如何保留第n个变量

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

本文作者:司海涛

文字编辑:李钊颖

技术总编:李朋冲


重磅!!!为了大家能够更好地学习Python技术,以及应广大粉丝和往期学员的要求,2019年11月29日-12月1日,武汉字符串数据科技有限公司将在湖北武汉举办《第四期Python编程技术培训》。本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python的编程技术,特别是网络数据抓取技术。目前正在火热招生中~

如果有兴趣,具体培训内容详见《2019年Python第四期培训招生》,报名请点击:阅读原文哦~


近日,小编的“学术大佬”室友孙某某遇到一个问题:有很多个文件,需要保留部分变量,而变量名又各不相同,但是要保留的变量恰好都是每一个数据中的第1、3、7个变量。于是,孙某人就问:在不知道变量名的情况下,如何才能保留一个数据中的第1、3、7个变量呢?

       小编在室友李某某的启发下,大致有了思路:

(1)拿到数据中的所有的变量名并保存在局部宏中,或者更直接地通过使用一些命令的返回值来实现,例如varsearch、ds以及findname等命令,我们在之前的推文中已详细介绍过,不再赘述;

(2)从前边获得的变量名中,提取第1、3、7个变量名,这里小编提供了3种办法,详见下文。

 

      我们以auto数据为例,保留其中的第1、3个变量。
一、split命令

(1)使用ds命令拿到auto数据中的所有变量名,并且保存在了返回值“r(varlist)”中(使用findname、varsearch也可)。

sysuse auto,cleardsreturn list


(2)将返回值读入Stata,并使用split分隔开来。

clearset obs 1gen v = "`r(varlist)'"split v,p(" ")


如上图所示,v1、v3下即对应第1、3个变量的名称。我们将其放入局部宏中,并重新读入数据并保留相关变量。

local var1 = v1[1]local var2 = v3[1]sysuse auto,clearkeep `var1' `var2'


可以看到最终只保留了数据中的第1、3个变量,即make、mpg。

 

二、利用宏扩展函数word # of string

在第一种方法中,我们在获取第13个变量名时,将返回值读入了Stata,这就覆盖掉了原来的数据,后边保留相关变量时需要重新读入数据。下面,我们使用宏扩展函数word # of string,可以直接得到第#以空格分隔的子字符串,即变量名。


sysuse auto,cleardslocal var1: word 1 of `r(varlist)' local var2: word 3 of `r(varlist)'di "`var1'"di "`var2'"keep `var1' `var2'


上述程序local var1: word 1 of `r(varlist)’ 表示将返回值“r(varlist)”中第一个以空格分隔的字符串放入局部宏var1中,即make。与第一种方法相比,显然使用宏扩展函数更加简洁。

 

三、使用字符串函数word(s,n)


       与宏扩展函数类似,我们也可以使用字符串函数word(s,n),它可以返回字符串s中第n个以空格分隔的子字符串
sysuse auto,cleardslocal var1 = word("`r(varlist)'",1)local var2 = word("`r(varlist)'",3)keep `var1' `var2'


问题虽小,可难倒了学术大佬。
命令多了,都不知道用哪个好。
莫慌,爬虫俱乐部是你的宝!
 
室友的问题,希望对大家有所帮助。提到这些个优秀的室友,这脑子就传来一首又一首:
       优秀的人儿在哪里,环湖十一看书记……
       神出鬼没行踪迷,论文模型GRE……
       九八手中紧紧握,九七对岸展笑颜……
       困倦床上腿仍摆,不知屁垫温余今……
       借此机会,祝室友们:工作的节节高升,读书的paper多多,一切顺利,各位!


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

      走进列表的世界——列表方法(二)

走进列表的世界——列表方法(一)
朝花夕拾|长宽数据转换——reshape命令

Stata有音乐包啦!

对《陈情令》的数据可视化分析

stata绘制热力图详解

实战演练-明星微博热搜次数的数据可视化

《少年的你》影评

集合常用方法小结

实战演练-爬取深交所年报

重建“通天塔” —— Unicode编码与解码

输出分组描述性统计表的利器——report

字典常用操作小结

XPath Helper助XPath爬虫一臂之力

查找变量?用“codebook”!

distinct命令用法一览

Stata数据分析技术应用培训

玩转Python之“手把手”教你爬数据(一)

关于我们

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

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

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

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