一、主要作用
PROC FORMAT是用来定义数值或符号文字的输出格式。 能够使我们在观看输出的Output时更易于了解及阅读。在使用此程序时,请注意,这个程序只是"定义"并不会自动输出至Output,我们必须用PROC FORMAT宣告的输出格式,配合以下两个程序步骤(Step)之相对应的宣告值使用之:在DATA中的INPUT和FORMAT叙述句。在PROC中的FORMAT叙述句。
上述的意思是:我们先以PROC FORMAT定义出输出的格式,然后再以DATA和PROC 呼叫已定义好的输出格式。
二、PROC FORMAT的程序格式及用法
其程序格式如下:其程序格式如下:
PROC FORMAT option; PROC FORMAT option;
VALUE name(options)
range1=label1
range2=label2
...;
PROC FORMAT option; PROC FORMAT option;
此处的option只有一项,即LIBRARY=libref。 此选项是为了要将之后宣告的输出格式设为永久数据集,以供日后使用。 若未指名此项,输出格式将" 暂 "存于WORK次目录中。同一个程序中,只须以FORMAT叙述句呼叫出即可。 若必须于不同的程序中使用同样的输出格式,则可建立一个永久格式。 举例如下:
LIBNAME save 'c:\lin'; LIBNAME save 'c:\lin';
PROC FORMAT LIBRARY=save; PROC FORMAT LIBRARY=save;
VALUE SEXFMT 1='男' 2='女'; VALUE SEXFMT 1='男' 2='女';
第一行:先选定c:\lin存放永久格式档,且代称为save。
第二行:将其后所设定的格式永久存放在c:\lin之中。
第三行:定义输出的格式。
VALUE name(options)
(1) name是指定的格式名称,其命名规则与SAS数据文件的文件名和变量名之命名规则相同(不过超过8个字符也可以使用),但若为文字变量,则在最前面加上"contentquot;即可。请注意,在之后的FORMAT叙述句呼叫时,需在此格式名称后紧接一个句点,即"."。
(2) options 有四个:
i)MIN=n,设定格式的最小宽度。
ii)MAX=n,设定格式的最大宽度。
iii)DEFAULT,以系统内定值为最长的描述格式或数值标签的长度。
iv)FUZZ=n,给予一个范围n,只要数值未超出范围,程序仍能给定卷标,反之无法给定。range1=label1 range2=label2 ...;
当我们的变量值在此数值范围内时, range1 ,则以适当的标签, label1 ,取代。如上述例子中最后一行:
VALUE SEXFMT 1='男' 2='女';
由上可知,SEXFMT是前述之输出格式名称,而只要变量值等于1 ,则我们以" 男 "取代, 等于2 ,以" 女 "取代。而"男"和"女"是文字变数,当然就要以单引号括起来。另外一例:
VALUE SCOREFMT 0-<60='不及格' OTHER='及格';
其中0-<60表示0到小于60分的范围。而OTHER表将未界定的范围全归于此标签下,在此例中是指60分以上的数值以"及格"取代。
三、程序范例引用
在这里我们引用了PROC FREQ中的程序及数据。在这里我们引用了PROC FREQ中的程序及资料。 我们将所需程序行于下:我们将所需程序行于下:
--------------------------------------------------------------------------------
PROC FORMAT;
VALUE GENDERFMT 1='Male' 2='Female';
VALUE AGEFMT 1-25='25 and below' 26-30='26-30' 31-35='31-35' 36-40='36-40' 41-45='41-45' 46-50='46-50' 51-55='51-55' 56-60='56-60'
OTHER='60 and above';
VALUE DEGREEFMT 1='BA' 2='Working on MB' 3='Oversea MB' 4='Local MB' 4='Local MB' 5='Working on PH.D' 6='Oversea PH.D' 6='Oversea PH.D' 7='Local PH.D' 8='Otherwise';
VALUE EXPFMT 0-5='0-5' 6-10='6-10' 11-15='11-15' 16-20='16-20'
21-25='21-25' 26-30='26-30' 31-35='31-35';
VALUE FREQFMT 0='0' 1-2='1-2' 3-4='3-4' 5-6='5-6' 7-8='7-8';
DATA A1;
INFILE 'CONTEST.TXT';
INPUT OBS GENDER AGE DEGREE EXP FREQ;
PROC PRINT;
FORMAT GENDER GENDERFMT.
AGE AGEFMT.
DEGREE DEGREEFMT.
EXP EXPFMT.
FREQ FREQFMT.;
RUN;
--------------------------------------------------------------------------------
我们将PROC FREQ的程序做了一些修改。红色字体部分是我们这次的重点。 我们可以发现在上述的程序中, PROC FORMAT一口气宣告了五种输出格式。而且在程序末端以PROC PRINT列出此DATA中的所有变数,且以FORMAT叙述句将五个变数以前面宣告的输出格式输出于Output上。
四、范例程序输出结果
在跑完上述的范例之后,我们的Output会出现如下的画面(以下是Output中的第一页并不是全部的Output):
在上面的Output视窗中我们可以看到,五个变数都已经用之前所宣告的输出格式取代了。 如此,我们是不是更容易且更快知道所有人的个人信息了。如此,我们是不是更容易且更快知道所有人的个人资讯了。
http://www.businessanalysis.cn/article-68139-1.html