Stata:inlist和inlist2命令介绍
理论模型可以简洁、凝练地抽离出经济现象的本质,使我们能够进行更深层次的思考和分析。然而,建立理论模型并非易事,若能将 理论和实证有机结合,那更加难能可贵了。
为此,我们邀请到了中山大学岭南学院郭凯明副教授,与大家一同学习理论模型的构建。郭老师一直专注于经济转型与中国经济方面的研究,发表论文近 40 篇,其中《经济研究》7 篇。
郭老师将从模型设定初衷、最基本的假设条件入手,通过讨论各种可能的建模思路和弯路,让学生不自觉中已经建立起理论分析的思维模式。最终的目标是:让学生不仅能「读懂模型」,还能「折腾模型」—— 可以自己修改甚至新设模型。
扫码直达课程主页:
作者:张立芳 (陕西师范大学)
邮箱:zhanglifangceee@163.com
目录
1. 背景介绍
2. 命令介绍
2.1 inlist 命令
2.2 inlist2 命令
3. 具体示例
4. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
1. 背景介绍
在清洗数据过程中,我们经常需要对变量进行重新赋值。例如,基于我国各个省份定义 East、Midlle、West 三个虚拟变量,或者基于国家名称或代码定义 Yes_OECD 国家虚拟变量。针对上述问题,常用方法是通过 if
条件语句对变量赋值。但是当类别较多时,if
命令语句将十分繁琐。为此,本文将介绍两个新命令 inlist
和 inlist2
,以试图更加高效简洁地处理这些工作。
2. 命令介绍
2.1 inlist 命令
该命令为系统自带,不需要安装。inlist
具体语法如下:
*命令语法
inlist(z,a,b,...)
语法描述:当 z 满足 a,b,... 中的任何一个,则返回值为 1,否则为0。所有参数必须是实数或者字符型数据,其中数值型参数的个数需要在 2~250 之间,字符型需要在 2~10 个字符; 适用范围:所有实数或者字符串; 返回值:0 或 1。
2.2 inlist2 命令
与 inlist
相比,inlist2
有两个主要变化:
首先,在 inlist2
命令中,字符串类型的参数不需要用引号 ' ' 括起来;其次, inlist2
命令运行后会生成一个新的变量,返回值为 0 或 1。
*命令安装ssc des inlist2 //程序包介绍ssc install inlist2, replace
*命令语法
inlist2 varname [, options]
其中,varname
为需要处理的变量,类似于 inlist
命令中的 z。option
主要包括以下选项:
values(a,b,c,...)
:所有参数必须是实数或者字符串。如果是字符串,需要区分大小写,且字符串中不能包含逗号;name(string)
:生成一个新的变量,默认变量名是 inlist2。
3. 具体示例
接下来,我们用一个例子来具体学习一下这两个命令的用法。首先,手动生成一个简单的数据文件。
clearinput str10 prov 天津北京上海广东福建山西陕西宁夏河南河北山东新疆黑龙江endsave 'data_inlist', replace //保存数据,以备后用
然后,生成 “东部” 虚拟变量。其中,东部包括:北京、天津、河北、辽宁、上海、江苏、浙江、福建、山东、广东、广西、海南 12 个省、自治区、直辖市。
gen East = 0
replace East = 1 if prov=='天津' | prov=='北京' | prov=='上海' | prov=='广东' | prov=='福建' | prov=='山东'
或将上述两句合并为一句命令。
gen East2 = (prov=='天津' | prov=='北京' | prov=='上海' | prov=='广东' | prov=='福建' | prov=='山东')
若使用 inlist
命令,语法会简化很多。需要注意的是,inlist
后面要直接加 (),不可加空格,否则会报错。同时,每个字符串都需要用引号 ' ' 括起来。
gen East3 = inlist(prov, '天津', '北京', '上海', '广东', '福建', '山东')
但这种定义方法有个很大的限制,即枚举的省份个数不能超过十个。一个变通的方法是,生成一个数值变量,用以标记省份名称,进而把每个省份的数字编码放到 inlist()
函数的列表中。之所以如此,主要是因为 inlist()
函数最多可以接受 250 个数字类型的列表元素。具体做法如下:
. encode prov, gen(provNum) label(provNum). label list provNumprovNum: 1 上海 2 北京 3 天津 4 宁夏 5 山东 6 山西 7 广东 8 新疆 9 河北 10 河南 11 福建 12 陕西 13 黑龙江
在这里,我们使用 encode
命令产生了 prov 变量的「数字-文字对应表」,并将其数值编码存储在新变量 provNum 中。此时,可以使用如下命令定义虚拟变量 East4:
gen East4 = inlist(provNum, 1,2,3,5,7,11)
上述功能也可以使用 inlist2
命令实现。inlist2
命令对数值型或字符型参数的个数都没有限制。需要注意的是,inlist2
命令中字符串不能加引号 ' ',否则会报错。
inlist2 prov, values(天津, 北京, 上海, 广东, 福建, 山东) name(East5)replace East5 = 0 if East5==.
当然,上述五种方法得到的结果完全相同。
. list prov East*, clean noobs
prov East East2 East3 East4 East5
天津 1 1 1 1 1
北京 1 1 1 1 1
上海 1 1 1 1 1
广东 1 1 1 1 1
福建 1 1 1 1 1
山西 0 0 0 0 0
陕西 0 0 0 0 0
宁夏 0 0 0 0 0
河南 0 0 0 0 0
河北 0 0 0 0 0
山东 1 1 1 1 1
新疆 0 0 0 0 0
黑龙江 0 0 0 0 0
如此简洁的命令,你学会了吗?
4. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 数据处理, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:数据处理 Stata数据处理:缺失值与多重补漏分析(一) Stata数据处理:缺失值与多重补漏分析(二) Stata数据处理:缺失值与多重补漏分析(三) Stata数据处理:一文读懂微观数据库清理(上) Stata数据处理:一文读懂微观数据库清理(下) Stata数据处理:iebaltab和ieddtab命令介绍-T208 Stata数据处理:ietoolkit命令组介绍-T207 Stata数据处理:清洗CFPS数据库 Stata数据处理:通过API获取经济数据 Stata数据处理:超大Excel文档如何读入 滚动吧统计量!Stata数据处理 Stata数据处理:各种求和方式一览 Stata数据处理:字符型日期变量的转换 Stata数据处理:统计组内非重复值个数 Stata数据处理:赫芬达尔指数-(hhi5)-命令介绍 Stata数据处理:物价指数-(CPI)-的导入和转换 Stata数据处理:分年度-行业计算销售额前四名的行业占比 Stata数据处理:快速读取万德-Wind-数据-readWind2 Stata数据处理:用-astile-快速创建分组 Stata数据处理:用-efolder-快速生成文件夹和子文件夹 Stata数据处理:FRED数据导入问题的解决方案 Stata数据处理:ftree命令-用txt文档记录文件夹结构 Stata数据处理:ascol-mtoq-日收益转周-月-季-年度数据 Stata数据处理:import-fred-命令导入联邦储备经济数据库-FRED Stata 数据处理:nrow + labone 的巧妙使用 Stata数据处理:面板数据的填充和补漏 Stata: 约翰霍普金斯大学 COVID-19 疫情数据处理及可视化 专题:面板数据 Stata数据处理:xtbalance-非平衡面板之转换 Stata数据处理:如何提取某个变量有记录的第一年的年份
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all