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()均匀分布随机数invnormal(uniform())标准正态分布随机数字符函数real(s)字符型转化为数值型string(n)数值型转化为字符型substr(s,n1,n2)从S的第n1个字符开始,截取n2个字符Substr(“this”,2,2)=isword(s,n)返回s的第n个字符Work(“this”,3)=ichar(n)返回字符的ASCII码indexnot(s1,s2)返回s1中第一个在s2中找不到的字母的位置,若s1所有的字母在s2中均可以找到,则返回0例如:indexnot(12disxl,2fsd1)=4indexnot(12disxl,2fsd1ixs)=7indexnot(12disxl,2fsd1lixs)=0itrim(s)将字符间多于一个空格缩减为一个空格例如:itrim(hellothere)=hellotherelength(s)返回字符串s的长度例如:length(ab)=2lower(s)将s中的字母变为xiaoxie例如:lower(THIS)=thisltrim(s)将字符串s中首字母之前的空格去掉例如:ltrim(this)=thisplural(n,s)orplural(n,s1,s2)如果n!=+/-1,plural(n,s)就是将s加到s后。如果s2前有+,表示将s2加到s1后,如果s2前为-,则返回s1中去掉s2字符串后剩下的字符串。如果s2前既没有+也没有-,则plural(n,s1,s2)=s2.例如:plural(1,horse)=horseplural(2,horse)=horsesplural(2,glass,+es)=glassesplural(1,mouse,mice)=mouseplural(2,mouse,mice)=miceplural(2,abcdefg,-efg)=abcdproper(s)将首字母大写,而且将紧接着非字母字符后的字母大写,其他的字母小写例如:proper(mR.joHna.sMitH)=Mr.JohnA.Smithproper(jacko'reilly)=JackO'Reillyproper(2-cent'sworth)=2-Cent'SWorthreal(s)将s字符串转化为数字后返回,或返回“.”例如:real(5.2)+1=6.2real(hello)=.reverse(s)将字符串颠倒过来例如:reverse(hello)=ollehrtrim(s)去掉字符串末尾的空格例如:rtrim(this)=this.string(n)将数字n转化为字符串例如:string(4)+F=4Fstring(1234567)=1234567string(12345678)=1.23e+07string(.)=.string(n,s)将数字n转化为字符串例如:string(4,%9.2f)=4.00string(123456789,%11.0g)=123456789string(123456789,%13.0gc=123,456,789string(0,%td)=01jan1960string(225,%tq)=2016q2string(225,notaformat)=strmatch(s1,s2)s2与s1的形式相同则返回1,否则返回0例如:strmatch(17.4,1??4)=1在s2中?代表此处有一个字符,*表示0或更多的字符•strpos(s1,s2)s2在s1中第一次找到的位置,否则为0例如:strpos(this,is)=3strpos(this,it)=0subinstr(s1,s2,s3,n)返回s1,将s1中第n次出现s2时的s2替换成s3,若n为”.”,则将所有s1中的s2字符串替换成s3例如:subinstr(thisisthis,is,X,1)=thXisthissubinstr(thisisthis,is,X,2)=thXXthissubinstr(thisisthis,is,X,.)=thXXthXsubstr(s,n1,n2)返回s1的子集,从s1中第n1个字符开始抽取,抽n2个字符例如:substr(abcdef,2,3)=bcdsubstr(abcdef,-3,2)=desubstr(abcdef,2,.)=bcdefsubstr(abcdef,-3,.)=defsubstr(abcdef,2,0)=substr(abcdef,15,2)=trim(s)将字符串s的首字母之前和末尾的空格去掉例如:trim(this)=thisupper(s)将字符串s中的字母变为大写例如:upper(this)=THISword(s,n)s中第n个单词例如:word(glasstassatd,2)=tassword(glasstassatd,.)=.wordcount(s)s中单词数例如:wordcount(glasstassatd)=4二、系统变量_n当前观察值的序号_N共有多少观察值_piπ三、数学函数Abs(x)x的绝对值Acos(x)反余弦函数Asin(x)反正弦函数Atan(x)反正切函数atanh(x)反双曲正切函数ceil(x)返回大于或等于自变量的最小的整数。Floor(x)返回小于或等于自变量的最大的整数Int(x)返回自变量的整数部分Round(x,y)返回与y的单位最接近的数x,x为真数,y为近似单位例如:round(5.2,1)=round(4.8,1)=5round(2.234,0.1)=2.2round(2.234,0.01)=2.23cloglog(x)返回ln{-ln(1-x)}的值comb(n,k)从n中取k个的组合,即comb(n,k)=n!/{k!(n-k)!}例如:comb(10,5)=252comb(6,2)=15cos(x)余弦函数digamma(x)返回digamma函数值,这是lngamma(x)的一阶导数exp(x)指数函数invcloglog(x)返回invcloglog(x)=1-exp{-exp(x)}的值ln(x)自然对数函数lnfactorial(n)返回N阶乘的自然对数,即lnfactorial(n)=ln(n!),计算n!时用round(exp(lnfactorial(n)),1)函数保证得出的结果是一个整数。求n的阶乘的对数比单纯求阶乘更有用,因为存在溢出值问题。lngamma(x)返回.gamma函数的自然对数log10(x)以10为底对数函数logit(x)返回logit函数值logit(x)=ln{x/(1-x)}max(x1,x2,...,xn)求x1,x2,...,xn中的最大值min(x1,x2,...,xn)求x1,x2,...,xn中的最小值例如:min(1,2,3)=3mod(x,y)求x除以y的余数,即mod(x,y)=x-y*int(x/y)reldif(x,y)返回x,y的相对差异值,reldif(x,y)=|x-y|/(|y|+1).如果x和y都是相同类型的缺失值,则返回0;如果只有一个为缺失值或x、y为不同类型的缺失值,则返回缺失值。sign(x)求x的符号,如果为负数,则返回-1;如果为0,则返回0;如果为正数,则返回1;如果是缺失值,则返回缺失值sin(x)正弦函数sqrt(x)求x的平方根,x只能为非负数例如:sqrt(100)=10sum(x)返回x的和,将缺失值看成是0tan(x)正切函数tanh(x)双曲正切函数trigamma(x)返回lngamma(x)的二阶导数trunc(x)将数据截为特定的长度四、概率分布和密度函数•betaden(a,b,x)返回β分布的概率密度,a,b为参数,如果x0或者x1,返回0•binomial(n,k,p)n次贝努里试验,取得成功次数小于或等于k次的概率,其中一次p为事件成功的概率若k0返回1;若kn返回0•binomialtail(n,k,p)n次贝努里试验,取得成功次数大于或等于k次的概率,其中一次p为事件成功的概率若k0返回1;若kn返回0•binormal(h,k,r)返回自由度为n的卡方的分布,chi2(n,x)=gammap(n/2,x/2)。若x0,则返回0•chi2tail(n,x)chi2tail(n,x)=1-chi2(n,x)。若x0,则返回1•dgammapda(a,x)返回gammap(a,x)分布函数关于a的偏微分,a0.若x0,则返回0•dgammapdada(a,x)返回gammap(a,x)分布函数关于a的二阶偏微分,a0.若x0,则返回0•dgammapdadx(a,x)返回gammap(a,x)分布函数关于a和x的二阶偏微分,a0.若x0,则返回0•dgammapdx(a,x)返回gammap(a,x)分布函数关于x的偏微分,a0.若x0,则返回0•dgammapdxdx(a,x)返回gammap(a,x)分布函数关于x的二阶偏微分,a0.若x0,则返回0•F(n1,n2,f)返回分子自由度为n1,分母自由度为n2的F分布函数。若f0,则返回0•Fden(n1,n2,f)分子自由度为n1,分母自由度为n2的F分布函数的概率密度函数。若f0,则返回0•gammap(a,x)gamma分布•ibeta(a,b,x)β分布•normal(z)正态分布函数•normalden(z)标准正态分布密度函数•tden(n,t)t分布的概率密度函数五、日期时间函数•date(date,mask)返回date与1960年1月1日相距的天数,其中mask的形式为“MDY”或“YMD”或“DMY”,表示date中年月日的顺序•weekly(date,mask)返回date与1960年1月1日相距的星期数•monthly(date,mask)返回date与1960年1月1日相距的月数•quarterly(date,mask)返回date与1960年1月1日相距的季度数•halfyearly(date,mask)返回date与1960年1月1日相距的星期数•yearly(date,mask)返回date与1960年1月1日相距有多少个半年•clock(date,mask)返回date与1960年1月1日相距的秒数•mdyhms(M,D,Y,h,m,s)从年月日,小时,分钟,秒得到stata日期时间值•dhms(td,h,m,s)从日期,小时,分钟,秒得到stata日期时间值•hms(h,m,s)从小时,分钟,秒返回一个stata日期时间值•mdy(M,D,Y)从月,日,年中得到一个stata日期值•yw(Y,W)从年,星期得到一个stata日期值,表示距1960年1月1日有多少个星期•ym(Y,M)从年,月得到一个stata日期值,表示距1960年1月1日有多少个月•yq(Y,Q)从年,季度得到一个stata日期值,表示距1960年1月1日有多少个季度•yh(Y,H)从年,半年得到一个stata日期值,表示距1960年1月1日有多少个半年•year(d)从stata日期中得到年份•month(d)从stata日期中得到月份•day(d)从stata日期中得到当前日期(一个月内的日期)•doy(d)从stata日期中得到当前日期(一年内的日期)•quarter(d)从stata日期中得到当前季度