Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者:张立芳 (陕西师范大学)
邮箱:zhanglifangceee@163.com
目录
在清洗数据过程中,我们经常需要对变量进行重新赋值。例如,基于我国各个省份定义 East、Midlle、West 三个虚拟变量,或者基于国家名称或代码定义 Yes_OECD 国家虚拟变量。针对上述问题,常用方法是通过 if
条件语句对变量赋值。但是当类别较多时,if
命令语句将十分繁琐。为此,本文将介绍两个新命令 inlist
和 inlist2
,以试图更加高效简洁地处理这些工作。
该命令为系统自带,不需要安装。inlist
具体语法如下:
*命令语法
inlist(z,a,b,...)
与 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。
接下来,我们用一个例子来具体学习一下这两个命令的用法。首先,手动生成一个简单的数据文件。
clear
input str10 prov
天津
北京
上海
广东
福建
山西
陕西
宁夏
河南
河北
山东
新疆
黑龙江
end
save "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 provNum
provNum:
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
如此简洁的命令,你学会了吗?
Note:产生如下推文列表的 Stata 命令为:
lianxh 数据处理, m
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh