1.4 Stata 16.0运算符与函数
下载资源:\video\第1章\…
下载资源:\sample\第1章\数据1
1.4.1 Stata 16.0运算符
在Stata 16.0中,我们可以使用的算术运算符、关系运算符和逻辑运算符分别如表1.1~表1.3所示。
表1.1 算术运算符
表1.2 关系运算符
表1.3 逻辑运算符
注意
各类运算符的优先顺序是:!(或~),^,-(负号),/,*,-(减号),+,!=(或~=),>,<,<=,>=,==,&,|。如果用户难以记住运算符的优先顺序,可以采用嵌套括号的形式获取运算优先级,最里层括号内的表达式将会最先被计算。
下面使用“数据1”数据文件作为进行相应运算的示例。
1.算术运算
在命令窗口中依次输入:
gen newX7=X7+1 (本命令的含义是生成newX7变量,其值为X7加1)
list X7 newX7 in 1/5 (本命令的含义是列出第1~5个样本观测值X7和newX7的值,可以发现newX7的值都是对应X7的值加1)
上述命令的执行结果如图1.33所示。
图1.33 第1~5个样本观测值X7和newX7的值
然后输入:
drop newX7(本命令的含义是删除已生成的newX7变量)
drop命令是用来删除某些变量和观测值的,基本命令如下:
· 删除变量: drop varlist。
· 删除样本观测值:drop if exp。
· 删除一定范围内的样本观测值:drop in range [if exp]。
与drop命令相对应的是keep命令,用来保留某些变量和观测值,基本命令如下:
· 保留变量: keep varlist。
· 保留样本观测值:keep if exp。
· 保留一定范围内的样本观测值:keep in range [if exp]。
特别提示
使用drop命令删除变量和观测值、keep命令保留变量和观测值都是不可逆的。一旦用户排除了变量和观测值,就不能再把它们读取回来。用户需要返回原始数据集并重新读取。所以,用户应该尽量考虑使用if或in临时选择子集,而不是应用drop或keep进行子集分析。这通常是最好的策略。
2.数值运算
数值计算的命令为“di”,在命令窗口中依次输入:
di 5+3
di 5-3
di 7^2
di 7/2
di(6+7^(5-3))/sqrt(5*5)
即可出现如图1.34所示的结果。
3.字符运算
图1.34 数值计算结果
字符运算的命令为“scalar”,在命令窗口中依次输入:
scalar X="中华"+"人民共和国"(本命令的含义是生成字符X,将“中华”和“人民共和国”连在一起,注意引号必须是半角和英文模式)
scalar list X(本命令的含义是列出生成的字符X,注意列出字符的命令是scalar list)
上述命令的执行结果为:X=中华人民共和国。
然后我们输入:
scalar Y=X+"万岁"(本命令的含义是生成字符Y,将前面生成的X和"万岁"连在一起,需要注意的是X不再加引号)
scalar list Y(本命令的含义是列出生成的字符Y)
上述命令的执行结果为:Y = 中华人民共和国万岁。
4.关系运算
示例关系运算。在命令窗口中依次输入如下的关系运算命令:
di 9==8
di 4>=2
即可出现如图1.35所示的结果。
我们可以灵活运用关系运算针对分类变量创建虚拟变量。接续上例,如果在命令窗口中依次输入:
gen xingbienew1=(xingbie==1)
gen xingbienew2=(xingbie==2)
gen xingbienew3=(xingbie!=2)
gen xingbienew4=(xingbie~=2)
list xingbie xingbienew1 xingbienew2 xingbienew3 xingbienew4 in 1/5
即可出现如图1.36所示的执行结果。
图1.35 关系运算示例的执行结果
图1.36 针对分类变量创建虚拟变量
可以发现,xingbienew1、xingbienew3为xingbie==1时的虚拟变量,xingbienew2、xingbienew4为xingbie==2时的虚拟变量。
5.逻辑运算
示例逻辑运算。在命令窗口中输入:
list Y1 Y2 X1 X2 if Y1>=4&X1<4|Y2>=3&X2<=5(本命令的含义是列出符合条件的样本Y1、Y2、X1、X2的值,条件一是Y1大于等于4且X1小于等于4,条件二是Y2大于等于3且X2小于等于5,两个条件符合其一即可)。
即可出现如图1.37所示的执行结果。
1.4.2 Stata 16.0函数
图1.37 逻辑运算示例的执行结果
函数用于表达式中,表达式在Stata命令中缩写为exp,可以在任何表达式中调用函数。函数的参数可以是包括其他函数在内的任何表达式。函数的参数用圆括号括起来,如果有多个参数,则参数之间用逗号分隔开。Stata 16.0共有9大类函数,分别是日期和时间函数、数学函数、矩阵函数、编程函数、随机数函数、时间序列函数、统计函数、字符串函数、三角函数。具体的函数类型以及相关的介绍,用户可以通过在命令窗口中输入“help function”进行查询,常见的函数如表1.4所示。
表1.4 常见的函数
下面继续使用“数据1”数据文件作为计算示例,在命令窗口中依次输入:
di sqrt(49) (求49的平方根,结果为10)
di abs(-10) (求-10的绝对值,结果为10)
di ln(exp(9)) (先求e的9次方,再取对数,结果为9)
di int(9.22) (对9.22取整数,结果为9)
di int(-9.22) (对-9.22取整数,结果为-9)
di round(-9.22) (对-9.22四舍五入,结果为-9)
di round(-9.22,.1) (对-9.22四舍五入至小数点后一位,结果为-9.2)
下面结合函数来看两个重要命令 gen和egen的区别,打开“数据1”文件,在命令窗口中依次输入:
gen Y2new1=sum(Y2) (生成变量Y2new1,将变量Y2样本观测值汇总求和)
egen Y2new2=sum(Y2) (生成变量Y2new2,将变量Y2所有样本观测值汇总求和)
list Y2 Y2new1 Y2new2 in 1/10 (列出Y2、Y2new1、Y2new2前10个样本观测值)
得到如图1.38所示的执行结果。
图1.38 Y2、Y2new1、Y2new2前10个样本观测值
从上面的执行结果可知,gen命令生成的变量值是一个变动的值,egen命令生成的新变量值往往是一个常数。