欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:58010771       资源大小:119.50KB        全文页数:18页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    5函数与运算符5.1运算符expSTATA共有四种运算,分别是代数运算、字符运算、关系运算和逻辑运算。运算符一览表代数运算逻辑运算比较关系+加!不>大于-减不<小于*乘|或>=不小于/除&和<=不大于指数=等于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 23 /2的立方,输出8. di (2+3(2-3)/sqrt(2*3) /括号运算优先,想一想,结果应为多少?实际上,更多的情形是两个或多个变量的直接运算。比如,将进口车的价格都增加100元(可能是关税),而国产车不变。. sysuse auto, clear. gen nprice=price+foreign*100. list nprice price foreign5.1.2字符运算加(+)号同样可用于字符运算,当加号出现在两个字符之间时,两个字符将被连成一个字符。比如把”我爱” “STATA”合并在一起,命令为:. scalar a=”我爱” +“STATA” /要特别注意,引号必须是半角和英文模式. scalar list a /scalar命令将两个字符运算后的结果赋于a,然后显示a. scalar a=2 +“3” /注意到:字符与数值不能直接相加,显示类型不匹配type mismatchr(109);5.1.3关系运算关系运算包括大于、小于、等于;不等于、不小于、不大于等多种比较关系。特别要注意到STATA中的等于符号为“=”,是两个等号连写在一起,不同于赋值时用的单个等号“=”。. di 3<5 /输出结果为1,意味着3小于5为真. di 3>5 /输出的结果为0,意味着3大于5为假。当数据中含有缺失值的时候需要特别小心,因为系统缺失值大于任何一个数据,利用这一点,我们可以使用条件语句排除缺失值。任务:将年龄分组为65岁以下和65岁及以上两组,缺失值显然不能包括在任何一组中。age38.65421880. 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<.的作用。ageAgegrp1Agegrp2Agegrp338000.1.651114200018000801105.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=05.2函数概览function函数只不过是一些编号的小程序,它会按一定的规则进行处理,之后报告结果。实际上,谁也记不住这么多函数,因此,首先要学会查找函数的帮助,当记不住的时候,随时去查寻帮助。记住下面的命令才是最关键的。. help functionType 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包括八类函数,分别是数学函数,分布函数,随机数函数,字符函数,程序函数,日期函数,时间序列函数和矩阵函数。本章主要介绍数学函数和字符函数,其他函数将在后面相应的章节介绍。常用函数一览表函数含义举例数值型函数abs(x)绝对值abs(-9)=9comb(n,k)从n中取k个的组合comb(10,2)=45exp(x)指数exp(0)=1fill()自动填充数据int(x)取整int(5.6) = 5, int(-5.2) = -5.ln(x)对数ln(1)=0log10(x)以10为底的对数log10(1000)=3mod(x,y)= x - y*int(x/y)mod(9,2)=1round(x)四舍五入round(5.6)=6sqrt(x)开方sqrt(16)=4sum(x)求和随机函数uniform()均匀分布随机数第10讲将介绍invnormal(uniform()标准正态分布随机数第11讲将介绍字符函数real(s)字符型转化为数值型string(n)数值型转化为字符型substr(s,n1,n2)从S的第n1个字符开始,截取n2个字符Substr(“this”,2,2)=isword(s,n)返回s的第n个字符Work(“this”,3)=i系统变量_n当前观察值的序号_N共有多少观察值_pi5.3数学函数math functions5.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) /取对数l5.3.2取整和四舍五入取整. di int(3.49) /int()取整,不论后面的小数是什么,只取小数点前的数值. di int(3.51) /输出3. di int(-3.49) /输出-3. di int(-3.51) /输出-3四舍五入. di round(3.49) /round()取整,四舍五入,结果为3. di round(3.51) /四舍五入,结果为4. di round(-3.49) /四舍五入,结果为-3. di round(-3.51) /四舍五入到个位数,结果为-4. di round(3.345,.1) /四舍五入到十分位,结果为3.3. di round(3.351,.1) /四舍五入到十分位,结果为3.4. di round(3.345,.01) /四舍五入到百分位,结果为3.35. di round(3.351,.01) /四舍五入到百分位,结果为3.35. di round(335.1,10) /四舍五入到十位,结果为330对变量的操作. sysuse auto, clear. gen nprice=price/10000 /将价格变到以万为单位. gen nprice2=round(nprice,0.01) /四舍五入到百分位. list nprice* /比较结果5.3.3求和及求均值gen和egenclear set obs 5gen x=_n /生成新变量x, x的取值从1到5 gen y=sum(x) /求列累积和 egen z=sum(x) /求列总和egen r=rsum(x y z) /求x+y+z总和 egen hsum = rowtotal(x y z) /求hsum=a+b+c egen havg = rowmean(x y z) /求havg=(a+b+c)/3 egen hsd = rowsd(x y z) /求a、b和c的方差 egen rmin = rowmin(x y z) /求x y z)三个变量的最小值 egen rmax = rowmax(x y z) /求x y z)三个变量的最大值 list /注意比较y和z的不同。egen avgx=mean(x) /求列均值egen medx=median(x) /求列中值egen stdx = std(x) /求列标准差replace y=3 in 3egen byte dxy = diff(x y) /当x与y相等时,differ取0,若不相等为1更多关于egen命令的用法将参考帮助:help egen5.3.4其他 sysuse auto, clear egen rmpg = rank(mpg) /求mpg的次序 sort rmpg list mpg rank /列示结果egen highrep78 = anyvalue(rep78), v(3/5) /*若rep78不为3、4或5, 则为缺失值*/ list rep78 highrep78clearinput ab10001101001.0endegen ab=group(a b)egen ab2=group(a b),missingla b ab ab2 1.1 0 3 3 2.0 0 1 1 3.1 1 4 4 4.0 1 2 2 5.0 0 1 1 6.1 . . 5 7. 0 . 65.4字符函数string functions任务:将美国汽车数据中汽车商标变量值简化为取前三个字母,得到一个新的变量make3sysuse auto, cleargen str3 make3=substr(make,1,3)list make*任务:下表的数据是一个多选题,请把这道多选题转化为四个单选题a222、1、31、2、44、2、11、221、2gen na1=strpos(a, "1")!=0 /strops(s1,s2)返回字符s2在s1中的位置gen na2=strpos(a, "2")!=0gen na3=strpos(a, "3")!=0gen na4=strpos(a, "4")!=0lista na1 na2 na3 na4 1.2 0 1 0 0 2.2 0 1 0 0 3.1、2、3 1 1 1 0 4.1、2、4 1 1 0 1 5.1、2、4 1 1 0 1 6.1、2 1 1 0 0 7.2 0 1 0 0 8.1、2 1 1 0 0 webuse genxmpl2, clear gen name2 = word(name,2) /新变量name2,取值为name的第二个字母 list n*5.5 分类操作byclearedit *将下表复制粘贴到STATA数据编辑器中,注意粘贴时把光标停在第一格。xy11.111.211.322.122.2gen n=_n /生成一个新变量n=1,2,3,4,5gen N=_N /生成一个新变量N=5,5,5,5,5gen z=y1 /生成一个新变量z=y的第一个观察值l x y n N z 1.1 1.1 1 5 1.1 2.1 1.2 2 5 1.1 3.1 1.3 3 5 1.1 4.2 2.1 4 5 1.1 5.2 2.2 5 5 1.1by x, sort: gen n1=_n /注意到n1与n的不同,n1按x分类进行操作by x, sort: gen N1=_Nby x, sort: gen z1=y1list x y n N z n1 N1 z1 1.1 1.1 1 5 1.1 1 3 1.1 2.1 1.2 2 5 1.1 2 3 1.1 3.1 1.3 3 5 1.1 3 3 1.1 4.2 2.1 4 5 1.1 1 2 2.1 5.2 2.2 5 5 1.1 2 2 2.1任务:下列数据为家庭成员数据family.dta,其中hhid为家庭编码,age为家庭成员的年龄。将下表数据复制到STATA,然后另存为family.dtahhidage18614213615712824225240要求:(1)生成一个新变量hhsize,该变量表示共有多少个家庭成员。(2)给每个家庭成员一个编码id。如第一个家庭的第一个成员编码为11;(3)按家庭生成一个全家成员平均年龄值mage。(4)对每个家庭,分别按年龄大小排序,然后生成一个家庭成员代码,即家庭内年龄最小的成员代码为1,年龄最大的家庭成员,代码为nid。最后需要生成的数据集如下:hhidagehhsizeidmagenid12851549.8113651349.8214251249.8315751449.8418651149.8525322291240323292242321293请自己先思考,再参考如下操作 :将上表数据复制粘贴到STATA数据编辑器,然后执行下面的命令use family, clearby hhid,sort :gen hhsize=_N /得到家庭规模hhsizeby hhid,sort :gen id=_n+hhid*10 /为家庭成员编码by hhid,sort: egen mage=mean(age) /求平均年龄sort hhid age /按户排序,在每个户内按年龄大小排序by hhid: gen nid=_n /在户内按年龄大小为家庭成员编码 | hhid age hhsize id mage nid | 1. | 1 28 5 11 49.8 1 | 2. | 1 36 5 12 49.8 2 | 3. | 1 42 5 13 49.8 3 | 4. | 1 57 5 14 49.8 4 | 5. | 1 86 5 15 49.8 5 | 6. | 2 5 3 21 29 1 | 7. | 2 40 3 22 29 2 | 8. | 2 42 3 23 29 3 |另一个例子:use family, clearbysort hhid (age): gen nid1=_n /括号中的变量age只排序,不参于分组。bysort hhid age: gen nid2=_n / hhid 和ag e都既用来参与排序也分组list /比较上面两个命令得到的不同结果hhid age nid1 nid2 1.1 28 1 1 2.1 36 2 1 3.1 42 3 1 4.1 57 4 1 5.1 86 5 1 6.2 5 1 1 7.2 40 2 1 8.2 42 3 1webuse stan2, clearexpand 2 if transplant /将transplant=1的观察值再复制一个sort idby id: generate byte posttran = (_n=2) /*生成一个新变量posttran,使得 对同一个人,第一个观察值取0,第 二个观察值取1*/by id: generate t1 = stime if _n=_N /*生成新变量t1,使得在同一个id下, 对第二期取值为stime,否则为“.”第 18 页

    注意事项

    本文(STATA入门5函数与运算符.doc)为本站会员(美****子)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开