一、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;