STATA入门5函数与运算符.docx

上传人:b****2 文档编号:2167068 上传时间:2022-10-27 格式:DOCX 页数:13 大小:22.51KB
下载 相关 举报
STATA入门5函数与运算符.docx_第1页
第1页 / 共13页
STATA入门5函数与运算符.docx_第2页
第2页 / 共13页
STATA入门5函数与运算符.docx_第3页
第3页 / 共13页
STATA入门5函数与运算符.docx_第4页
第4页 / 共13页
STATA入门5函数与运算符.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

STATA入门5函数与运算符.docx

《STATA入门5函数与运算符.docx》由会员分享,可在线阅读,更多相关《STATA入门5函数与运算符.docx(13页珍藏版)》请在冰豆网上搜索。

STATA入门5函数与运算符.docx

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命令的略写,表示显示结果

.di4-2//输出2

.di3*5//输出15

.di8/2//8除以2,输出4

.di2^3//2的立方,输出8

.di–(2+3^(2-3))/sqrt(2*3)//括号运算优先,想一想,结果应为多少?

实际上,更多的情形是两个或多个变量的直接运算。

比如,将进口车的价格都增加100元(可能是关税),而国产车不变。

.sysuseauto,clear

.gennprice=price+foreign*100

.listnpricepriceforeign

5.1.2字符运算

加(+)号同样可用于字符运算,当加号出现在两个字符之间时,两个字符将被连成一个字符。

比如把”我爱”“STATA”合并在一起,命令为:

.scalara=”我爱”+“STATA”//要特别注意,引号必须是半角和英文模式

.scalarlista//scalar命令将两个字符运算后的结果赋于a,然后显示a

.scalara=2+“3”//注意到:

字符与数值不能直接相加,显示类型不匹配

typemismatch

r(109);

5.1.3关系运算

关系运算包括大于、小于、等于;不等于、不小于、不大于等多种比较关系。

特别要注意到STATA中的等于符号为“==”,是两个等号连写在一起,不同于赋值时用的单个等号“=”。

.di3<5//输出结果为1,意味着3小于5为真

.di3>5//输出的结果为0,意味着3大于5为假。

当数据中含有缺失值的时候需要特别小心,因为系统缺失值大于任何一个数据,利用这一点,我们可以使用条件语句排除缺失值。

任务:

将年龄分组为65岁以下和65岁及以上两组,缺失值显然不能包括在任何一组中。

age

38

.

65

42

18

80

.clear

.edit

将上述数据复制到STATA中,然后退出数据编辑器。

.genagegrp1=(age>=65)

生成的数据中,将缺失值视为65岁以上分在了高龄组,这是错误的

.genagegrp2=(age>=65)ifage<.

生成的数据中,将缺失值排除在外,正确!

这一命令常被用于生成虚拟变量。

.genagegrp3=(age==65)ifage<.//仅判断是否恰好为65岁

.list//比较agegrp1、agegrp2和agegrp3的差异,体会ifage<.的作用。

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元的国产车。

.sysuseauto,clear

.listpriceforeignifprice>10000|price<4000&forei==0

在STATA中,和(&)优先于或(|),因此上述命令与下面的命令等价:

.listpriceforeignifprice>10000|(price<4000&forei==0)

试一试下面的命令,这里列示的是国产车中价格高于10000元或者低于4000元的车。

.listpriceforeignif(price>10000|price<4000)&forei==0

5.2函数概览function

函数只不过是一些编号的小程序,它会按一定的规则进行处理,之后报告结果。

实际上,谁也记不住这么多函数,因此,首先要学会查找函数的帮助,当记不住的时候,随时去查寻帮助。

记住下面的命令才是最关键的。

.helpfunction

TypeoffunctionSeehelp

--------------------------------------+-------------------------

Mathematicalfunctionsmathfunctions

Probabilitydistributionsand

densityfunctionsdensityfunctions

Random-numberfunctionsrandom-numberfunctions

Stringfunctionsstringfunctions

Programmingfunctionsprogrammingfunctions

Datefunctionsdatefunctions

Time-seriesfunctionstime-seriesfunctions

Matrixfunctionsmatrixfunctions

弹出来的对话框告诉我们,STATA包括八类函数,分别是数学函数,分布函数,随机数函数,字符函数,程序函数,日期函数,时间序列函数和矩阵函数。

本章主要介绍数学函数和字符函数,其他函数将在后面相应的章节介绍。

常用函数一览表

函数

含义

举例

数值型函数

abs(x)

绝对值

abs(-9)=9

comb(n,k)

从n中取k个的组合

comb(10,2)=45

exp(x)

指数

exp(0)=1

fill()

自动填充数据

int(x)

取整

int(5.6)=5,int(-5.2)=-5.

ln(x)

对数

ln

(1)=0

log10(x)

以10为底的对数

log10(1000)=3

mod(x,y)

=x-y*int(x/y)

mod(9,2)=1

round(x)

四舍五入

round(5.6)=6

sqrt(x)

开方

sqrt(16)=4

sum(x)

求和

随机函数

uniform()

均匀分布随机数

第10讲将介绍

invnormal(uniform())

标准正态分布随机数

第11讲将介绍

字符函数

real(s)

字符型转化为数值型

string(n)

数值型转化为字符型

substr(s,n1,n2)

从S的第n1个字符开始,截取n2个字符

Substr(“this”,2,2)=is

word(s,n)

返回s的第n个字符

Work(“this”,3)=i

系统变量

_n

当前观察值的序号

_N

共有多少观察值

_pi

π

5.3数学函数mathfunctions

5.3.1三角函数,指数和对数函数

数学函数可以直接对数据进行运算,也可以对变量进行运算。

.disqrt(4)//开方,输出2

.disqrt(6+3)//先相加,再开方,输出3

.diabs(-100)//求绝对值,输出100

.diexp

(1)//表示e1,输出2.7182818

.diln(exp

(2))//先求e2,再取对数,得到2

.di_pi//_pi为圆周率,得到3.1415927

.dicos(_pi)//_pi的余弦值,得到-1

数学函数可以直接对数据进行运算,也可以对变量进行运算。

对变量的操作:

clear

setobs5

genx=_n//生成新变量x,取值为1,2,3,4,5

geny1=exp(x)//取指数

geny2=ln(x)//取对数

geny3=sin(exp(x))+cos(ln(x))//取对数

l

5.3.2取整和四舍五入

取整

.diint(3.49)//int()取整,不论后面的小数是什么,只取小数点前的数值

.diint(3.51)//输出3

.diint(-3.49)//输出-3

.diint(-3.51)//输出-3

四舍五入

.diround(3.49)//round()取整,四舍五入,结果为3

.diround(3.51)//四舍五入,结果为4

.diround(-3.49)//四舍五入,结果为-3

.diround(-3.51)//四舍五入到个位数,结果为-4

.diround(3.345,.1)//四舍五入到十分位,结果为3.3

.diround(3.351,.1)//四舍五入到十分位,结果为3.4

.diround(3.345,.01)//四舍五入到百分位,结果为3.35

.diround(3.351,.01)//四舍五入到百分位,结果为3.35

.diround(335.1,10)//四舍五入到十位,结果为330

对变量的操作

.sysuseauto,clear

.gennprice=price/10000//将价格变到以万为单位

.gennprice2=round(nprice,0.01)//四舍五入到百分位

.listnprice*//比较结果

5.3.3求和及求均值gen和egen

clear

setobs5

genx=_n//生成新变量x,x的取值从1到5

geny=sum(x)//求列累积和

egenz=sum(x)//求列总和

egenr=rsum(xyz)//求x+y+z总和

egenhsum=rowtotal(xyz)//求hsum=a+b+c

egenhavg=rowmean(xyz)//求havg=(a+b+c)/3

egenhsd=rowsd(xyz)//求a、b和c的方差

egenrmin=rowmin(xyz)//求xyz)三个变量的最小值

egenrmax=rowmax(xyz)//求xyz)三个变量的最大值

list//注意比较y和z的不同。

egenavgx=mean(x)//求列均值

egenmedx=m

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1