资源描述
一、一、SAS过程中常用的语句过程中常用的语句 SAS过程实际是一个个已经写好的经过编译可以直接调用的程序,本节课开始介绍在调用这些过程中常用的语句。一、一、PROC步和步和PROC语句语句(一)、(一)、PROCPROC步步 PROCPROC步是以一个步是以一个PROCPROC语句开头,以语句开头,以RUNRUN语句结语句结束的一组或几组束的一组或几组SASSAS语句。语句。(二)、(二)、PROCPROC语句语句n n 功能:该语句是功能:该语句是PROCPROC步开始的标志,指定该步开始的标志,指定该PROC PROC 步调用一个步调用一个SASSAS过程,对指定的过程,对指定的SASSAS数据集数据集进行处理和分析、存放结果和输出。进行处理和分析、存放结果和输出。n n格式:格式:PROC PROC 过程名过程名 选择项;选择项;n n说明:选择项随过程名的不同而不同。说明:选择项随过程名的不同而不同。PROC PRINT DATA=AA;PROC PRINT DATA=AA;PORC MEANS MEAN STD T;PORC MEANS MEAN STD T;/*/*做描述性统计,求均数、标准差、做描述性统计,求均数、标准差、T T检验检验*/PROC TTEST DATA=HEART;PROC TTEST DATA=HEART;二、二、VAR语句和语句和MODEL语句语句(一)、(一)、VARVAR语句语句n n功能:该语句指定调用过程分析中的变量功能:该语句指定调用过程分析中的变量n n格式格式 :VAR VAR 变量变量1 1 变量变量2 2 ;n n说明:说明:1 1、省略该语句时,对所有变量做统计计算。省略该语句时,对所有变量做统计计算。2 2、变量名列表可以使用省略的形式,如、变量名列表可以使用省略的形式,如x1-x3 x1-x3 例:例:PROC MEANS MEAN STD;*PROC MEANS MEAN STD;*调用调用MEANSMEANS过程过程计计 算均数,标准差;算均数,标准差;VAR X1X3VAR X1X3;*计算计算X1X3X1X3变量的均数和标准变量的均数和标准 差,如省略这个语句,将计算这个差,如省略这个语句,将计算这个 数据集中的所有变量的均数和标数据集中的所有变量的均数和标 准差;准差;RUN;RUN;(二)、(二)、MODELMODEL语句语句n n功能:指定统计分析中的模型,该语句主要用于功能:指定统计分析中的模型,该语句主要用于方差分析和回归分析。方差分析和回归分析。n n格式:格式:MODEL MODEL 因变量因变量 =自变量列表自变量列表 ;n n说明:选择项随过程名的不同而不同。说明:选择项随过程名的不同而不同。例:例:model y=x;model y=x;model y=x1x3;*model y=x1x3;*多元回归;多元回归;三、三、BY语句和语句和CLASS语句语句(一)、(一)、BYBY语句语句n n功能:指定一个或几个分组变量,根据这些分组功能:指定一个或几个分组变量,根据这些分组变量值可以把观测记录分组,然后对每一组观测变量值可以把观测记录分组,然后对每一组观测分别进行指定的分析。分别进行指定的分析。n n语句格式:语句格式:BY DESCENDING BY DESCENDING 变量变量;n n说明:说明:在使用带有在使用带有BYBY语句的过程步之前,应先用语句的过程步之前,应先用SORTSORT过程按过程按BYBY语句指定的变量对数据集排序。语句指定的变量对数据集排序。例如:例如:假设我们已经把假设我们已经把classclass数据集按性别排序,则下面数据集按性别排序,则下面PRINT PRINT 过程可以把男、女生分别列出:过程可以把男、女生分别列出:proc print data=class;proc print data=class;by sex;by sex;run;run;(二)、(二)、CLASSCLASS语句语句n n功能:指定调用功能:指定调用SASSAS过程中的分类变量,对分类过程中的分类变量,对分类变量的不同取值分别进行处理。变量的不同取值分别进行处理。n n格式:格式:CLASS CLASS 分类变量;分类变量;n n说明:说明:分类变量只有少数几个离散值或不连续值,字分类变量只有少数几个离散值或不连续值,字符型或数值型均可。作用类似于符型或数值型均可。作用类似于BYBY语句,但不语句,但不需事先排序。需事先排序。例:例:PROC MEANS MEAN;*PROC MEANS MEAN;*调用调用MEANSMEANS过程;过程;CLASS SEX;*CLASS SEX;*指定指定SEXSEX为分类变量;为分类变量;VAR AGE;*VAR AGE;*按按CLASSCLASS指定的分类变量分别指定指定的分类变量分别指定 AGEAGE的数据;的数据;RUN;RUN;n n说明:男性和女性分别计算平均年龄,此处的说明:男性和女性分别计算平均年龄,此处的CLASSCLASS也可以改为也可以改为BYBY,所不同的是,所不同的是BYBY后的所有后的所有变量都必须经过排序,功能和变量都必须经过排序,功能和CLASSCLASS语句一样。语句一样。四、四、FREQ语句与语句与WEIGHT语句语句(一)、(一)、FREQFREQ语句(频数语句)语句(频数语句)n n功能:指定某个变量为观测的频数变量。功能:指定某个变量为观测的频数变量。n n格式:格式:FREQ FREQ 变量;变量;n n说明:说明:用用FREQFREQ指定的频数变量的值必须大于等于指定的频数变量的值必须大于等于1 1,如果某观测的频数变量的值小于如果某观测的频数变量的值小于1 1,则此观测在分,则此观测在分析中被忽略。析中被忽略。例:例:DATA B;INPUT SEX$AGE NUMBER;CARDS;F 20 10 F 22 23 M 21 19 M 22 16 PROC MEANS;VAR AGE;PROC MEANS;FREQ NUMBER;VAR AGE;RUN;(二)、(二)、WEIGHTWEIGHT语句(权重)语句(权重)n n功能:在过程中规定一个数值变量,并以它的功能:在过程中规定一个数值变量,并以它的值作为观测值的权重。值作为观测值的权重。n n格式:格式:WEIGHT 变量;例:例:DATA FOUR;DATA FOUR;INPUT R C F;INPUT R C F;CARDS;CARDS;1 1 45 1 2 33 2 1 14 2 2 61 1 45 1 2 33 2 1 14 2 2 6;PROC FREQ;PROC FREQ;TABLE R*C /TABLE R*C /CHISQ;*CHISQ;*卡方检验;卡方检验;WEIGHT F;*WEIGHT F;*指定指定F F为权重变量;为权重变量;RUN;RUN;n nFREQ 和WEIGHT语句的区别 FREQFREQ表示某变量出现的次数,而表示某变量出现的次数,而WEIGHTWEIGHT给出给出变量观测的权重,当每个观测的权重都是整数时,变量观测的权重,当每个观测的权重都是整数时,WEIGHTWEIGHT语句可以用语句可以用FREQFREQ语句代替。即语句代替。即WEIGHT WEIGHT 权重值可以是小数。权重值可以是小数。五、五、OUTPUT语句语句n用于数据步用于数据步语句格式:OUTPUT SASOUTPUT SAS数据集名数据集名 关键词关键词=变量名变量名 n n功能:n n将当前的观测值写入正建立的数据集中。将当前的观测值写入正建立的数据集中。n n说明:n n关键词随不同的过程步而变化(通常是统计量)关键词随不同的过程步而变化(通常是统计量)output语句使用在数据步中:data m f;*建立两个数据集;Input sex$age height weight;If sex=m then output m;If sex=f then output f;Cards;M 15 165 45f 14 160 40m 14 166 52;五、五、OUTPUT语句语句n用于过程步用于过程步语句格式:OUTPUT OUT=数据集名 统计关键字=变量名n n功能:在在procproc步中建立一个由步中建立一个由SASSAS过程中产生的统计过程中产生的统计量的数据集。量的数据集。n n说明:n n统计关键字指明在新的数据集中想要的统计统计关键字指明在新的数据集中想要的统计项,并给包含这些统计项的变量起名。项,并给包含这些统计项的变量起名。n nOutputOutput语句输出语句输出SASSAS中间运算结果并非中间运算结果并非output output 窗口的结果output语句使用在过程步中:语句使用在过程步中:proc means mean std n;*mean std n proc means mean std n;*mean std n 三个关键三个关键三个关键三个关键词;词;词;词;varvar x;x;output out=statis_1 mean=m std=s n=n;output out=statis_1 mean=m std=s n=n;/*/*在在在在statis_1 statis_1 数据集中用数据集中用数据集中用数据集中用mm表示表示表示表示mean*/mean*/run;run;在在在在outputoutput语句中输出了一个名为语句中输出了一个名为语句中输出了一个名为语句中输出了一个名为statis_1 statis_1 的数的数的数的数据集,该数据集包括据集,该数据集包括据集,该数据集包括据集,该数据集包括m,s,nm,s,n三个变量,分别表三个变量,分别表三个变量,分别表三个变量,分别表示了均数,标准差和样本个数。示了均数,标准差和样本个数。示了均数,标准差和样本个数。示了均数,标准差和样本个数。六、六、ID 语句语句n n格式:格式:ID ID 变量表;变量表;n n功能:功能:在输出数据集时,用该语句所规定的变量来识别观测值。在输出数据集时,用该语句所规定的变量来识别观测值。n n例:例:PROC PRINT DATA=APROC PRINT DATA=A;PROC PRINT DATA=APROC PRINT DATA=A;ID NAMEID NAME;七、七、LABEL 语句语句n n格式:LABEL LABEL 变量;变量;n n功能:给变量赋以标记,以便把变量名的含义更明确给变量赋以标记,以便把变量名的含义更明确地在输出中表示出来。地在输出中表示出来。n n说明:n n当在一个过程步中使用当在一个过程步中使用LABELLABEL语句时,仅在语句时,仅在该过程步期间该标记与该变量相联系。该过程步期间该标记与该变量相联系。n n数据步中使用时,标记与变量的联系一直存在数据步中使用时,标记与变量的联系一直存在所建的数据集中。所建的数据集中。八、八、TITLE语句语句n n格式:n nTITLEnTITLEn 标题内容标题内容;n n功能:规定打印到SAS输出文件上的标题。n n说明:n n n n:规定标题所在行,规定标题所在行,1 11010,缺省值为,缺省值为1 1。n n标题内容长度不超过当前规定的行长。标题内容长度不超过当前规定的行长。n n缺省的标题是缺省的标题是“The SAS System”The SAS System”。n n规定的标题在以后的输出中都有效,直至取规定的标题在以后的输出中都有效,直至取消这一标题或为该行定义其它的标题为止。消这一标题或为该行定义其它的标题为止。n n取消所有现存标题:取消所有现存标题:TITLETITLE;n n取消第取消第n n行和它后面行的标题:行和它后面行的标题:TITLEnTITLEn;n n语句位置:语句位置:a.a.上一过程步或数据步的上一过程步或数据步的RUNRUN语句之后;语句之后;b.b.如如果果上上一一步步无无RUN RUN 语语句句,则则放放在在本本过过程程的的PROCPROC语语句句之之后后以以及及下下一一个个DATADATA步步或或PROCPROC步步或或RUNRUN语语句句之前。之前。例例n nProc print data=class1;Proc print data=class1;Title title for two procedure;Title title for two procedure;Proc means data=class1;Proc means data=class1;VarVar weight;weight;Run;Run;n nProc print data=class1;Proc print data=class1;run;run;Title title for two procedure;Title title for two procedure;Proc means data=class1;Proc means data=class1;VarVar weight;weight;Run;Run;九、九、FOOTNOTE语句语句n n格式:格式:FOOTNOTEnFOOTNOTEn 脚注内容脚注内容;n n功能:在输出页的底部打印一些脚注信息功能:在输出页的底部打印一些脚注信息n n说明:说明:n n n n:规定脚注所在相对行,规定脚注所在相对行,1 11010,缺省值为,缺省值为1 1。带有最高行号的脚注出现在最底部。带有最高行号的脚注出现在最底部。n n脚注内容长度不超过当前规定的行长。脚注内容长度不超过当前规定的行长。n n规定的脚注内容在以后的输出中都有效,直规定的脚注内容在以后的输出中都有效,直至用语句:至用语句:FOOTNOTEFOOTNOTE;取消已给出的脚取消已给出的脚注注。n n例:PROC PRINT DATA=A;TITLE1 THIS IS;TITLE2 A DATASET;FOOTNOTE1 -;FOOTNOTE2 END;RUN;十、十、OPTIONS语句语句输出格式选项输出格式选项OPTIONSOPTIONS语句语句n nOPTIONSOPTIONS语句可以规定系统运行的一些通用选择语句可以规定系统运行的一些通用选择项,比如输出是否每页有页号,是否有日期,输项,比如输出是否每页有页号,是否有日期,输出的行宽,输出每一页的高度(行数),等等。出的行宽,输出每一页的高度(行数),等等。其使用例如:其使用例如:n noptions options nonumbernonumber nodatenodate linesizelinesize=78=78 pagesizepagesize=60;=60;n n其中其中NONUMBERNONUMBER表示输出不显示页号(改用表示输出不显示页号(改用NUMBERNUMBER则规定显示页号),则规定显示页号),NODATENODATE表示不在表示不在每页显示运行日期和时间(改用每页显示运行日期和时间(改用DATEDATE则显示),则显示),LINESIZE=78LINESIZE=78规定输出每行最宽不超过规定输出每行最宽不超过7878个字符,个字符,PAGESIZE=60 PAGESIZE=60 规定输出每页为规定输出每页为6060行,不足时用空行,不足时用空行补齐。行补齐。十一、十一、WHERE语句语句n n功能:where 语句用于选择输入数据集的记录子集以进行分析,在WHERE关键词后指定一个逻辑条件。n n格式:where 逻辑表达式;n n例:where math=60 and Chinese=60;指定只分析数学语文都及格的学生二、二、SAS服务过程服务过程 SAS SAS 服务过程不直接给出统计值,常被用于准服务过程不直接给出统计值,常被用于准备或整理统计资料。备或整理统计资料。n nPRINTPRINTn nFORMATFORMATn nSORTSORTn nDBFDBFn nTRANSPOSETRANSPOSEn nSTANDARDSTANDARD2.1 PRINT 过程过程PRINT 过程语句PROC PRINT DATA=PROC PRINT DATA=数据集数据集 NOOBS NOOBS;VAR VAR 变量表;变量表;*指定变量输出;指定变量输出;ID ID 变量;变量;LABEL LABEL 表达式;表达式;SUM SUM 变量表;变量表;*求和;求和;BY BY 变量;变量;*分类,用分类,用BYBY语句前一定要先排序;语句前一定要先排序;WHERE WHERE 表达式;表达式;例1proc print data=class1;var name chinese sex;run;例2例例3 3:有一关于两个不同地区在职人员与退休人员年平均收:有一关于两个不同地区在职人员与退休人员年平均收入与消费水平的调查,入与消费水平的调查,要求要求:分在职与不在职打印出每一分在职与不在职打印出每一地区两种人员收入与消费的总和。地区两种人员收入与消费的总和。DATA A;DATA A;INPUT NAME$15.D$W$EARN EXP INPUT NAME$15.D$W$EARN EXP;CARDS;CARDS;LILING LILING A A 1 1 5500 5500 4700 4700 LIUHONG LIUHONG B 2 B 2 4600 4600 40004000 PROC SORT;BY D W;PROC SORT;BY D W;PROC PRINT;PROC PRINT;BY D W;BY D W;SUM EARN EXP;SUM EARN EXP;例例4 4:Data one;Input name$sex$age;Cards;Zhang f 18 wang m 16 li f 17 zhao m 19 ;Proc sort data=one;By sex;Proc print data=one noobs;*结果不显示OBS项;var age;by sex;*用by语句一定要先排序;Sum age;*求和;Run;2.2 FORMAT过程过程n功能:对字符或数值变量定义一个用户所需的输出格式。n两种格式:n n值输出格式:值输出格式:输出值转变成不同的值(数值输出值转变成不同的值(数值字符;字符字符;连续数值离散字符)n n描述输出格式:指定打印数值的模式描述输出格式:指定打印数值的模式n说明:VALUE语句定义一种值输出格式,可把某变量的值按所定义的格式输出。可把数值变成字符或把字符转变成另一字符。每一VALUE语句可定义一种格式,在一个FORMAT过程中,你可以使用多个VALUE语句定义多个格式。以下给出以下给出VALUEVALUE语句应用的几个实例:语句应用的几个实例:n nVALUE ABCF 1=A 2=B 3=C VALUE ABCF 1=A 2=B 3=C;n nVALUE AGEF VALUE AGEF LOW-12=CHILD 13-19=TEENS LOW-12=CHILD 13-19=TEENS 20-HIGH=ADULT;20-HIGH=ADULT;n nVALUE VALUE SEXF 1=MALE SEXF 1=MALE 2=FEMALE OTHER=MISCODED 2=FEMALE OTHER=MISCODED;例例1 1:DATA SCORE;DATA SCORE;LENGTH NAME$12.;LENGTH NAME$12.;INPUT NAME SEX GROUP$T1-T3 ;INPUT NAME SEX GROUP$T1-T3 ;S=SUM(OF T1-T3);S=SUM(OF T1-T3);CARDS;CARDS;WANGDONG 1 1 90 70 60 XUEPING 2 2 85 95 88 WANGDONG 1 1 90 70 60 XUEPING 2 2 85 95 88 ZHOUHUA 1 1 77 84 69 HEYAN 1 2 95 78 88 ZHOUHUA 1 1 77 84 69 HEYAN 1 2 95 78 88 SUNHONG 2 3 89 97 87 ZHAOBIN 2 3 66 98 86 SUNHONG 2 3 89 97 87 ZHAOBIN 2 3 66 98 86 ;PROC FORMAT;PROC FORMAT;VALUE SEXF 1=MALE 2=FEMALE;VALUE SEXF 1=MALE 2=FEMALE;PROC PRINT DATA=SCORE;PROC PRINT DATA=SCORE;FORMAT SEX SEXF.;FORMAT SEX SEXF.;RUN;RUN;例例2 2:PROC FORMAT;VALUE$SEXFMT 1=FEMALE 2=MALE;VALUE AGEFMT LOW-20=-20 20-45=-45 45-HIGH=45+;DATA A;INPUT NAME$SEX$AGE V;FORMAT AGE AGEFMT.SEX$SEXFMT.;CARDS;wangdong 1 10 4300 li 1 10 4500 xueping 2 18 4500 wang 2 48 4800 ;PROC MEANS;CLASS SEX AGE;VAR V;RUN;
展开阅读全文