SAS过程步常用语句

来源:互联网 发布:icmp协议端口 编辑:程序博客网 时间:2024/06/10 09:44

一、print过程

print过程可以打印一个SAS数据集中的全体或部分观测值,还可以打印数

值变量的综合或部分和。

print过程中经常使用的语句有:

proc print [选择项];

var 变量表;

by 变量表;

sum 变量表;

在proc print 语句中可能出现的选择项有

   (1)data=数据集名,如果省略这一选择,则打印最新建立的数据集中的数据。

   (2)sum语句被用来求变量表中诸变量的总和。

   (3)N   输出观测个数

   (4)Double|D   隔行打印

   (5)Round|R    四舍五入

   (4)Noobs      不输出观测数据的序号

   (4)pageby   按by组分页输出,必须和by语句一起应用

   (4)sumby    按by组分别求和

 

二、sort过程

SORT过程将SAS数据集中的观测值按一个或多个变量的值进行排序,以便

其他的SAS过程利用by语句对这些观测值进行分组处理,排序后的观测值存放在一个新的SAS数据集中或者代替原来的数据集。

在SORT过程中经常使用的语句有:

proc sort [选择项];

by 变量表;

在proc sort语句中可能出现的选择项有:

data=数据集名,用来说明要排序的数据集名,如果省略这一选择,则指定最新建立的数据集。

out=数据集名,用来说明要输出的数据集名,如果省略这一选择,则原来的数据集被输出的数据集替换。

sort过程默认按升序排列,若要按降序排列,在对应变量前增加选择项descending

 

 

三、FORMAT过程

   format过程可以对字符或数值变量定义一个所需要的输出格式,使data步以及含有format的语句的过程步中的变量都受到这一输出格式的限制。

   通过proc FORMAT过程所定义的格式包括:

(1)将输出值转换成不同的值、数值可以变成字符,字符可以变成另外的字符。

(2)使输出值保留一定的小数位,否则输出值将有8个小数位。

FORMAT过程由下列语句控制:

PROC FORMAT;

           VALUE格式名 格式的定义;

为便于识别,格式名通常是原变量名加fmt

如果原变量是字符串,则应当在格式名前加字符串符号。

后面的过程中,如果涉及到某变量的输出格式,必须有语句:

                                              FORMAT 变量名 格式名

 举例:

data ex;
length name$ 10;
input name sex$ group$ t1-t3 @@;
cards;
wangdong 1 1 90 70 60 xueping 2 2 85 95 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
huangshan 2 3 67 75 76 hufang 1 2 78 77 69
lili 2 2 70 82 63 zhaoli 2 3 95 90 91
zhangqun 1 1 93 91 89 yiping 1 3 59 88 93
liyun 1 1 89 96 76 liyu 2 1 79 89 87
huajin 2 2 89 97 80
;proc format;
value $sexfmt '1'='m' '2'='f';
value $groupfmt '1'='a' '2'='b' '3'='c';
value t1fmt 0-<60='C' 60-<80='B' 80-100='A';
proc print;
format sex $sexfmt.;
format group $groupfmt.;
format t1 t1fmt.;
format t2 t3 4.1;
run;


四、standard过程

standtard过程按给定的平均值和标准差对SAS数据集中的部分或全体变量进行“标准化”变换,并形成新的数据集。

在standard过程中经常使用的语句有:

proc standard  [选择项];

var 变量表;

freq 变量表;

by 变量表;

在proc standard语句中可能出现的选择项有:

              data=数据集名,用来说明要“标准化”变换的数据集名,如果省略这一选择,则指定最新建立的数据集。

       out=数据集名,用来说明含有“标准化”变量的新数据集名,如果忽略这一选择,SAS将按内部程式给出新的数据集名。

    此过程将打印输出每个“标准化”变量的输入频数、平均值及标准差。

 举例:

data st;
length name$10;
input name sex$ group$ t1-t3 @@;
cards;
wangdong 1 1 90 70 60 xueping 2 2 85 95 88
zhouhua 1 1 77 84 69 heyan 1 1 95 78 88
sunhong 2 3 89 97 87 zhaobin 2 3 66 98 86
huangshan 2 3 67 75 76 hufang 1 2 78 77 69
lili 2 2 70 82 63 zhaoli 2 3 95 90 91
zhangqun 1 1 93 91 89 yiping 1 3 59 88 93
liyun 1 1 89 96 76 liyu 2 1 79 89 87
huajin 2 2 89 97 80
;
data ex;
set st;
st1=t1;
st2=t2;
st3=t3;
proc standard mean=80 std=5 out=new;
var st1-st3;
format st1-st3 5.2;
proc print data=new;
proc means data=new(drop=name group)
maxdec=1;
run;

 代码中的farmat st1-st3 5.2 用来定义新变量的格式。即小数点前两位、小护垫后两位、包括小数点共计五位。

MAXDEC=1 用来说明打印MEANS结果的小数位数为1位。


五、TRANSPOSE过程

    transpose过程将一个数据集进行转置,使行变为列而列变为行,也就是使原数据集中样品的观测值变换成新数据集中变量的观测值,而原数据集中变量的观测值则变成新数据集中样品的观测值。

transpose过程的格式为:

proc transpose [选择项];

var 变量表;

by 变量表;

在proc transpose语句中可以出现的选择项有:

(1)data=数据集名,用来说明要转置的数据集名;如果忽略这一选择,则指定最新建立的数据集。

(2)out=数据集名,用来说明转置所建立的心数据集名,如果省略这一选择,SAS将按内部程式给出新的数据集名。

(3)prefix=字母(指定一个新前缀,用来构成新变量名)

(4)name=字母(为含有输入数据集中被转置的变量名的输出数据集中的变量命名,如果省略这一选择,SAS将按内部程式指定)。

(5)copy=字母(列出的所有变量不被转置而直接从输入数据集拷贝到输出数据集中)

       在var语句中应列出要被转置的变量名,否则原数据集中未在其他语句中列出的所有数值型变量都将被转置,字符型变量必须在var语句中列出才能被转置,未被转置的变量不进入新的数据集,除非它们已经被列入copy或by语句。

    by语句使输入数据集分组转置,分组变量被包括在输出数据集中。

 举例:

data xzh01;
input a b c @@;
cards;
50 147 183
49 85 136
77 195 244
;
proc transpose prefix=y;
proc print;
run;


 


0 0