诸君安。在我们用stata处理数值型数据时,经常会用到一些数学函数。stata也提供了非常丰富的数学函数,如果掌握了这些函数,就可以帮助我们快速准确地处理数值型数据。今天,小编就给大家分享一些常用的数学函数。
二、Modulus & integer rounding(1)ceil(x)--返回大于或等于x的最小整数。(2)floor(x)--返回小于或等于x的最大整数。(3)int(x)--返回x的整数部分。[int(x)与trunc(x)用 法相同](4)round(x)--返回最接近x的整数。(把x四舍五入到个位)另外,round(x,y)可以设定四舍五入的位数。
例如:round(5.2,1)=round(4.8,1)=5 --表示四舍五 入到个位; round(2.234,0.1)=2.2 --表示四舍五入到十分位;
round(2.234,0.01)=2.23--表示四舍五入到百分位。
y也有可能是大于1的数,这时round(x,y)代表最接近x的y的整数倍的数。例如:round(28,2)=28--表示最接近28的2的整数倍; round(28,5)=30--表示最接近28的5的整数倍; round(28,8)=32--表示最接近28的8的整数倍; round(2.314,0.03)=2.31--表示最接近2.314的0.03的整数倍。接下来,我们通过具体的例子来进一步区别这四个函数:即mod(x,y)==x-y*floor(x/y)mod(x,y)函数在stata中只能在除数y>0的条件下才能求余。当除数y为0或者为负数时,返回值为 “ . ”例如: mod(0.3,0)=. mod(3,-0.56)=. 下表列出了 mod(x,y)函数,在除数y>0的情况下,不同的x,y所对应的结果。 (1)mod(0.3,0.1) ,其结果为0.1而不是0。很明显得,0.3/0.1=3,其余数应该是0,那么为什么是0.1呢 ? 我们再看x-y*floor(x/y),这里floor(0.3/0.1)=2,而不是3。是不是觉得很奇怪呢?这是因为像0.3和0.1这些数,并不是精确地等值的二进位制数值。为了说明了这一点,我们用%21.18f的显示格式来分别display 0.1和0.3。那
么0.3/0.1=2.999999999999999600
,所以floor(0.3/0.1)=2。mod(0.3,0.1)也就等于0.1。事实上,更精确
的,mod(0.3,0.1)=0.099999999999999978,只不过stata默认的是显示为0.1。(2)mod(-0.3,0.1)=5.551e-
17,而用公式x-y*floor(x/y)=-0.3-0.1*(-3)=0得出来的结果为0。出现这种情况也是因为0.3,0.1不是精确地数值,所
以再用公式x-y*floor(x/y)计算时是不能直接代入0.3和0.1的。· dis -0.299999999999999990- 0.100000000000000010*(-3)mod(x,y)函数在我们处理数据时,也可以得到巧妙的应用。insheet using d:/mod_example.txt这
个数据是一个期刊目录(包含533中期刊),一共有1列1599行,每三行是一个期刊,依次表示为期刊名称、主办(管)单位、期刊号。(这里只显示出前
21行)现在我们需要把这个数据变为3列533行,每一列分别对应期刊名称、主办(管)单位、期刊号。这时候我们就可以借助mod函数解决这个问题。命令
如下:outsheet using d:/期刊名称.txt if mod(_n,3)==1,replaceoutsheet using d:/主办单位.txt if mod(_n,3)==2,replaceoutsheet using d:/CN号.txt if mod(_n,3)==0,replace我
们利用mod(_n,3)==1,mod(_n,3)==2,mod(_n,3)==0,把数据分为3份,其中_n表示行数,每种期刊的第一行,除以3的
余数为1,第二行余数为2,第三行余数为0,这样就把所有的期刊名称、主办(管)单位、期刊号单独的列出来,用outsheet导出结果如下:
再通过merge命令进行横向合并就可以得到3列533行的数据。
注意:sum(x)在generate命令和egen命令中的效果是不一样的。接着我们分别利用generate和egen生成一个变量,这个变量等于x的和。我们发现sum(x)在generate中生成的是x依次累加的和(列累积和),而在egen中生成的是一组不变的所有x相加的和(列总和)。另外,如果有缺失值,则看做0。
1.max(x1,x2,x3......xn) -- 求x1,x2......xn中最大值
当所有xn都为缺失值,返回值为缺失值。
例如: max(.,.,.,.,.)=.
1.min(x1,x2,x3......xn) -- 求x1,x2......xn中最小值当所有xn都为缺失值,返回值为缺失值
例如: min(.,.,.,.,.)=.
以上就是今天小编与大家分享的全部内容了,如果各位看官喜欢今天分享的内容,不要吝啬你的打赏哦!想了解更多的数学函数,请继续关注我们的公众号,我们将在后期继续分享更多的数学函数!此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。投稿邮箱:xueyuan19920310@163.com1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。欢迎关注爬虫俱乐部~~