基本判断语句 if
与其他语言类似,Stata中也有if, if else,和while,不过我还从来没有在Stata用过后两个,秉着这个教程也是一个快速教程,这里我就只介绍if。如果大家对后两个感兴趣可以自行搜索,或者直接Stata里写help while/help if,查看官方文档主要看Syntax解释部分和最后的example,反正中间的内容我没怎么看,看了也忘了…
言归正传,if语句一般接在基本命令的后面,如:
* 生成一个新变量x结果是1,如果匹配的_merge等于1 *
gen x = 1 if city == "北京"
* 删除PM25变量小于100的数据行 *
drop if PM25 < 100
* 对所有AQI大于100的数据进行回归分析 *
reg y x1 x2 x3 if AQI > 100
这里我们也引出了判断条件:
相等: ==
大于: >
小于: <
大于等于: >=
小于等于: <=
根据数据特征,大家就自行练习。
逻辑判断:或且非
有时if后面我们会接两个甚至多个判断条件,这个时候就要用到逻辑判断。
- 或:|
关于什么叫或,大家应该都清楚,我就简单提一下,只要满足或的并列条件中其中一个,返回的判断结果就是true。举个例子:
* 把没有匹配上的数据都删除 *
drop if _merge == 1 | _merge == 2
这里,只要数据集中的_merge变量等于1或者等于2就会被删除,或语句我们使用符号" | "来表示。
- 且:&
且就是两个条件都满足,才返回true。直接上例子:
* 把age小于18且性别为1的数据删除 *
drop if age < 18 & gender == 1
- 非: !=
如果判断语句不满足,则返回true:
* 如果年份不是2020 则生成新变量x为666
gen x = 666 if year != 2020
用()判断
用括号判断的语句其实就是生成0或1的哑变量,我们用if语句也能完成,而且if语句功能更丰富。那这里我为什么要介绍这个呢?除了装逼我也想不出别的理由了。先上代码:
g post = (x>0)
什么意思?我用if语句解释一下:
g post = 1 if x > 0
replace post = 0 if post != 1
需要注意的是,()的判断只能生成0或1的哑变量,不能生成其他的值。所以我觉得这个作用挺有限的,只适合装杯。