解放双手!你必须要会的两个命令—inlist & inlist2
本文作者:喻淑敏,中南财经政法大学统计与数学学院
本文编辑:魏若芙
技术总编:戴 雯
Stata&Python云端课程来啦!
为了平衡团队运营成本,维系公众号的运营,也与国内动辄数千元的Stata课程缩短差距,我们的网课不得不上调价格,我们决定于2022年5月15日起调价,Python课程的价格调整为439.9元,Stata基础课程调为439.9元,Stata进阶课程调整到439.9元。大家可以告知一下身边想要购买的小伙伴,欲购从速哦,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言~我们在这篇推文提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~
在实证分析中,虚拟变量应用较为广泛且相对简单。尽管如此,生成虚拟变量仍有诸多细节需要注意,否则会导致虚拟变量存在偏差或者工作量巨大。当选择数据的条件过多时,使用Stata进行编程的过程中,用if语句写条件时,我们常常需要大量重复语句。而inlist、inlist2命令出现,能够有效地避免赘述条件,达到解放双手的效果。为此,本文将从实例出发,分方法就如何生成虚拟变量进行简要介绍,以帮助大家对Stata 生成虚拟变量的要点及注意事项有更好的理解。
命令语法 | inlist2 varname [, options] |
语法解析 | varname 为需要处理的变量,类似于 inlist 命令中的 z。option 主要包括以下选项:values(a,b,c,...) :所有参数必须是实数或者字符串。如果是字符串,需要区分大小写,且字符串中不能包含逗号;name(string) :生成一个新的变量,默认变量名是 inlist2 ,也可通过改变string进行赋予新变量名。 |
具体用法 | name(string) ,且其返回值为1,否则为0。 |
首先,inlist系统自带,无需安装;inlist2需先安装再使用,安装代码如下: ssc install inlist2, replace //安装命令
ssc des inlist2 //程序包介绍
其次,在 inlist2 命令中,字符串类型的参数不需要用引号 " " 括起来;inlist中引号必须存在;
再者,inlist2没有10个参数的限制字符串或实值的250个参数的上限限制
此外,inlist2自动区分变量是实数还是字符串,但不允许在字符串值中使用逗号
最后,inlist2命令运行后会生成一个新的变量,返回值仍为 0 或 1。
我们想要将全国32个省市自治区划分为东中西部,手动输入包含32个省市自治区的数据文件并保存,代码如下:
clear
input str21 province
"北京"
"福建"
"广东"
"广西"
"海南"
"河北"
"江苏"
"辽宁"
"山东"
"上海"
"天津"
"浙江"
"安徽"
"河南"
"黑龙江"
"湖北"
"湖南"
"吉林"
"江西"
"内蒙古"
"山西"
"甘肃"
"贵州"
"宁夏"
"青海"
"陕西"
"四川"
"西藏"
"云南"
"重庆"
"台湾"
"新疆"
end
save "inlist_inlist2", replace //保存数据
gen east_1 = 0
gen west_1 = 0
gen middle_1 = 0
replace middle_1 =1 if prov=="安徽" | prov=="河南" | prov=="黑龙江" | prov=="湖北" | prov=="湖南" | prov=="吉林" | prov=="江西" | prov=="内蒙古" | prov=="山西"
replace west_1 =1 if prov=="甘肃" | prov=="贵州" | prov=="宁夏" | prov=="青海" | prov=="陕西" | prov=="四川" | prov=="西藏" | prov=="云南" | prov=="重庆" | prov=="新疆"
replace east_1 =1 if prov=="天津" | prov=="北京" | prov=="上海" | prov=="广东" | prov=="福建" | prov=="山东" | prov=="台湾" | prov=="浙江" | prov=="辽宁" | prov=="江苏" | prov=="河北" | prov=="海南" | prov=="广西"
gen middle_2 =(prov=="安徽" | prov=="河南" | prov=="黑龙江" | prov=="湖北" | prov=="湖南" | prov=="吉林" | prov=="江西" | prov=="内蒙古" | prov=="山西")
gen west_2 =(prov=="甘肃" | prov=="贵州" | prov=="宁夏" | prov=="青海" | prov=="陕西" | prov=="四川" | prov=="西藏" | prov=="云南" | prov=="重庆" | prov=="新疆")
gen east_2 =(prov=="天津" | prov=="北京" | prov=="上海" | prov=="广东" | prov=="福建" | prov=="山东" | prov=="台湾" | prov=="浙江" | prov=="辽宁" | prov=="江苏" | prov=="河北" | prov=="海南" | prov=="广西")
(gen middle_3 =inlist(province, "安徽", "河南", "黑龙江", "湖北", "湖南", "吉林", "江西", "内蒙古", "山西")
gen west_3 =inlist(province, "甘肃", "贵州", "宁夏", "青海", "陕西", "四川", "西藏", "云南", "重庆", "新疆")
gen east_3 =inlist(province, "天津", "北京", "上海", "广东", "福建", "山东","台湾","浙江","辽宁","江苏","河北","海南","广西")
但这种定义方法有个很大的限制,即枚举的省份个数不能超过十个。因此生成west_3与east_3变量的命令语句出现报错。encode province, gen(prov_num) label(prov_num) //prov变量的「数字-文字对应表」,并将其数值编码存储在新变量prov_num中
label list prov_num //打印prov变量的「数字-文字对应表」
prov变量的「数字-文字对应表」如下:step2:把每个省份的数字编码放到 inlist()
函数的列表中,此时使用inlist命令定义虚拟变量:
gen middle_4 = inlist(prov_num, 3,6,10,12,17,19,22,23,32)
gen west_4 = inlist(prov_num, 2,7,9,15,24,26,27,29,30,31)
gen east_4 = inlist(prov_num, 1,4,5,8,11,13,14,16,18,20,21,25,28)
(inlist2 province,values(甘肃, 贵州, 宁夏, 青海, 陕西, 四川, 西藏, 云南, 重庆,新疆) name(west_5)
inlist2 province,values(安徽, 河南, 黑龙江, 湖北, 湖南, 吉林, 江西, 内蒙古, 山西) name(middle_5)
inlist2 province,values(北京,福建,广东, 广西, 海南, 河北, 江苏, 辽宁, 山东,上海, 天津, 浙江,台湾) name(east_5)
replace east_5 = 0 if east_5==.
replace west_5 = 0 if west_5==.
replace middle_5 = 0 if middle_5==.
本文通过if、insist和insist2这三个命令,共设计出五种方法,下面比较这五种方法的划分结果:
list west*,noobs sep(5)
list east*,noobs sep(5)
list middle*,noobs sep(5)
End
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
【基础篇】字符串之判断方法
Stata绘图系列——让你的直方图随心所欲
【爬虫篇】湖人无缘季后赛,球迷如何回应
客官,要来份四象限图吗?
Python实现简繁体转换
Stata与Python交互方法及数据传递
“青铜”爬“王者”
留下想要的变量,你会几种方法?
【爬虫篇】基于selenium爬取美团评论
双标的莱万——足球无关政治?!
Stata处理重复值:duplicates
It's time to send a flower to your lover! 2021各省GDP新鲜出炉爬虫实战-采集全国各省疫情数据
log——为你的操作保驾护航
一行代码教你玩转emoji
票房遇冷的春节档口碑冠军丨《狙击手》影评分析
学习丰县,营造良好营商环境!
大国丢娃图:从川渝到徐州!
丰县“失火”,殃及徐州:股市超跌近30亿!
Unicode转义字符——编码与解码
徐州!徐州!
B站弹幕爬虫——冬奥顶流冰墩墩&雪容融
不会用Stata做描述性统计表?so easy!
丰沛之地:备足姨妈巾
过年啦,用Python绘制一幅属于你的春联吧!
登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅【基础篇】查找并输出子字符串的定位
Stata中的小清新命令——添加观测值
PCA(主成分分析法)降维——Python实现
超好用的事件研究法
如何绘制任泽平《鼓励生育基金》的几幅图
Python 第六天——字符串
findname——想要什么找什么
Python字符串之“分分合合”
关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。