STATA入门5 函数与运算符
时间:2026-01-23
时间:2026-01-23
STATA入门
5函数与运算符
5.1运算符exp
STATA共有四种运算,分别是代数运算、字符运算、关系运算和逻辑运算。
运算的优先序:!(或~),^,-(负号),/,*,-(减),+,!=(或~=),>,<,<=,>=,==,&,| 当不确定优先序的时候,最好用括号将优先序直接表达出来。
5.1.1代数运算
包括加(+)、减(-)、乘(*)、除(/),幂(^)和负数(-),当遇到缺失值或者运算不可行时(比如除数为零)均会得到缺失值。
例:求正式的值,若x=4,y=2,显然经过心算,应该为:-1
x yx y
xy
. 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
STATA入门
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 3<5 //输出结果为1,意味着3小于5为真
. di 3>5 //输出的结果为0,意味着3大于5为假。 当数据中含有缺失值的时候需要特别小心,因为系统缺失值大于任何一个数据,利用这一点,我们可以使用条件语句排除缺失值。 任务:将年龄分组为65岁以下和65岁及以上两组,缺失值显然不能包括在任何一组中。
. 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<.的作用。
STATA入门
5.1.4逻辑运算
逻辑运算包括非(!),和(&)、或(|)三种,主要用于条件语句中。 例:列示出价格大于10000元的任何车,或者小于4000元的国产车。 . sysuse auto, clear
. list price foreign if price>10000 | price<4000 & forei==0
在STATA中,和(&)优先于或(|),因此上述命令与下面的命令等价: . list price foreign if price>10000 | (price<4000 & forei==0)
试一试下面的命令,这里列示的是国产车中价格高于10000元或者低于4000元的车。
. list price foreign if (price>10000 | price<4000) & forei==0
5.2函数概览function
函数只不过是一些编号的小程序,它会按一定的规则进行处理,之后报告结果。实际上,谁也记不住这么多函数,因此,首先要学会查找函数的帮助,当记不住的时候,随时去查寻帮助。记住下面的命令才是最关键的。 . help function
Type of function See help --------------------------------------+-------------------------
Mathematical functions math functions Probability distributions and density functions density functions
Random-number functions random-number functions String functions string functions Programming functions programming functions Date functions date functions Time-series functions time-series functions Matrix functions matrix functions
弹出来的对话框告诉我们,STATA包括八类函数,分别是数学函数,分布函数,随机数函数,字符函数,程序函数,日期函数,时间序列函数和矩阵函数。本章主要介绍数学函数和字符函数,其他函数将在后面相应的章节介绍。
STATA入门
5.3数学函数math functions
5.3.1三角函数,指数和对数函数
数学函数可以直接对数据进行运算,也可以对变量进行运算。 . di sqrt(4) //开方,输出2
. di sqrt(6+3) //先相加,再开方,输出3 . di abs(-100) //求绝对值,输出100 . di exp(1) //表示e1,输出2.7182818 . di ln(exp(2)) //先求e2,再取对数,得到2
. di _pi //_pi为圆周率,得到3.1415927 . di cos(_pi) //_pi的余弦值,得到-1
数学函数可以直接对数据进行运算,也可以对变量进行运算。 对变量的操作: clear
set obs 5
gen x=_n //生成新变量 x,取值为1,2,3,4,5 gen y1=exp(x) //取指数 gen y2=ln(x) //取对数
gen y3=sin(exp(x) ) +cos(ln(x)) //取对数 l
5.3.2取整和 …… 此处隐藏:4730字,全部文档内容请下载后查看。喜欢就下载吧 ……