如何保留第n个变量
本文作者:司海涛
文字编辑:李钊颖
技术总编:李朋冲
重磅!!!为了大家能够更好地学习Python技术,以及应广大粉丝和往期学员的要求,2019年11月29日-12月1日,武汉字符串数据科技有限公司将在湖北武汉举办《第四期Python编程技术培训》。本次培训采用理论与案例相结合的方式,旨在帮助零基础学员轻松入门Python,由浅入深学习和掌握Python的编程技术,特别是网络数据抓取技术。目前正在火热招生中~
如果有兴趣,具体培训内容详见《2019年Python第四期培训招生》,报名请点击:阅读原文哦~
小编在室友李某某的启发下,大致有了思路:
(1)拿到数据中的所有的变量名并保存在局部宏中,或者更直接地通过使用一些命令的返回值来实现,例如varsearch、ds以及findname等命令,我们在之前的推文中已详细介绍过,不再赘述;
(2)从前边获得的变量名中,提取第1、3、7个变量名,这里小编提供了3种办法,详见下文。
(1)使用ds命令拿到auto数据中的所有变量名,并且保存在了返回值“r(varlist)”中(使用findname、varsearch也可)。
sysuse auto,clear
ds
return list
(2)将返回值读入Stata,并使用split分隔开来。
clear
set obs 1
gen v = "`r(varlist)'"
split v,p(" ")
如上图所示,v1、v3下即对应第1、3个变量的名称。我们将其放入局部宏中,并重新读入数据并保留相关变量。
local var1 = v1[1]
local var2 = v3[1]
sysuse auto,clear
keep `var1' `var2'
二、利用宏扩展函数word # of string
在第一种方法中,我们在获取第1、3个变量名时,将返回值读入了Stata,这就覆盖掉了原来的数据,后边保留相关变量时需要重新读入数据。下面,我们使用宏扩展函数word # of string,可以直接得到第#个以空格分隔的子字符串,即变量名。
sysuse auto,clear
ds
local 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。与第一种方法相比,显然使用宏扩展函数更加简洁。
sysuse auto,clear
ds
local var1 = word("`r(varlist)'",1)
local var2 = word("`r(varlist)'",3)
keep `var1' `var2'
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。