- 27
- 0
- 约8.94千字
- 约 10页
- 2016-12-03 发布于贵州
- 举报
STATA门5 函数与运算符
5函数与运算符
5.1运算符exp
STATA共有四种运算,分别是代数运算、字符运算、关系运算和逻辑运算。
运算符一览表
代数运算 逻辑运算 比较关系 + 加 ! 不 大于 - 减 ~ 不 小于 * 乘 | 或 = 不小于 / 除 和 = 不大于 ^ 指数 == 等于 sqrt() 开方 != 不等于 ~= 不等于 ~= 不等于 + 字符相加
运算的优先序:!(或~),^,-(负号),/,*,-(减),+,!=(或~=),,,=,=,==,,|
当不确定优先序的时候,最好用括号将优先序直接表达出来。
5.1.1代数运算
包括加(+)、减(-)、乘(*)、除(/),幂(^)和负数(-),当遇到缺失值或者运算不可行时(比如除数为零)均会得到缺失值。
例:求正式的值,若x=4,y=2,显然经过心算,应该为:-1
. di –(4+2^(4-2))/(2*4) //di是display命令的略写,表示显示结果
. di 4-2 //输出2
. di 3*5 //输出15
. di 8/2 //8除以2,输出4
. di 2^3 //2的立方,输出8
. di –(2+3^(2-3))/sqrt(2*3) //括号运算优先,想一想,结果应为多少?
实际上,更多的情形是两个或多个变量的直接运算。比如,将进口车的价格都增加100元(可能是关税),而国产车不变。
. sysuse auto, clear
. gen nprice=price+foreign*100
. list nprice price foreign
5.1.2字符运算
加(+)号同样可用于字符运算,当加号出现在两个字符之间时,两个字符将被连成一个字符。比如把”我爱” “STATA”合并在一起,命令为:
. scalar a=”我爱” +“STATA” //要特别注意,引号必须是半角和英文模式
. scalar list a //scalar命令将两个字符运算后的结果赋于a,然后显示a
. scalar a=2 +“3” //注意到:字符与数值不能直接相加,显示类型不匹配
type mismatch
r(109);
5.1.3关系运算
关系运算包括大于、小于、等于;不等于、不小于、不大于等多种比较关系。特别要注意到STATA中的等于符号为“==”,是两个等号连写在一起,不同于赋值时用的单个等号“=”。
. di 35 //输出结果为1,意味着3小于5为真
. di 35 //输出的结果为0,意味着3大于5为假。
当数据中含有缺失值的时候需要特别小心,因为系统缺失值大于任何一个数据,利用这一点,我们可以使用条件语句排除缺失值。
任务:将年龄分组为65岁以下和65岁及以上两组,缺失值显然不能包括在任何一组中。
age 38 . 65 42 18 80 . clear
. edit
将上述数据复制到STATA中,然后退出数据编辑器。
. gen agegrp1=(age=65)
生成的数据中,将缺失值视为65岁以上分在了高龄组,这是错误的
. gen agegrp2=(age=65) if age.
生成的数据中,将缺失值排除在外,正确!这一命令常被用于生成虚拟变量。
. gen agegrp3=(age==65) if age. //仅判断是否恰好为65岁
. list //比较agegrp1、 agegrp2和agegrp3的差异,体会if age.的作用。
age Agegrp1 Agegrp2 Agegrp3 38 0 0 0 . 1 . . 65 1 1 1 42 0 0 0 18 0 0 0 80 1 1 0
5.1.4逻辑运算
逻辑运算包括非(!),和()、或(|)三种,主要用于条件语句中。
例:列示出价格大于10000元的任何车,或者小于4000元的国产车。
. sysuse auto, clear
. list price foreign if price10000 | price4000 forei==0
在STATA中,和())Type of function See help
--------------------------------------+-------------------------
Mathematical functions math functions
Probability distributions an
原创力文档

文档评论(0)