文章目录
- 一、 Using Format to Enhance Your Output
- 1.1 读取survey.txt数据
- 1.2 Using PROC FORMAT to create user-defined formats
- 1.3 Adding a FORMAT statement in PROC PRINT
- 二、参考资料
一、 Using Format to Enhance Your Output
本次例子为《Learning SAS by Example, A Programmers Guide》第五章的内容。目前有survey数据集。需要对变量里面的值贴上适当的标签增加输出结果的可读性。
1.1 读取survey.txt数据
我们可以查看survey.txt数据的格式
001 M 23 28000 1 2 1 2 3
002 F 55 76123 4 5 2 1 1
003 M 38 36500 2 2 2 2 1
004 F 67 128000 5 3 2 2 4
005 M 22 23060 3 3 3 4 2
006 M 63 90000 2 3 5 4 3
007 F 45 76100 5 3 4 3 3
在SAS系统中进行导入txt文件
data sas.survey;
infile 'G:\survey.txt' pad;
input ID : $3.
Gender :$1.
Age
Salary
(Ques1-Ques5)($1.+1);
run;
proc print data = sas.survey;
id ID;
run;
未使用 proc format 打印的结果为:
1.2 Using PROC FORMAT to create user-defined formats
我们使用proc format进行对每个变量设置用户自定义的格式
proc format;
value $gender 'M' = 'Male'
'F' = 'Female'
' ' = 'Not entered'
other = 'Miscoded';
value age low-29 = 'Less than 30'
31-50 = '30 to 50'
51-high = '51+';
value $likert '1' = 'Strongly disagree'
'2' = 'Disagree'
'3' = 'No opinion'
'4' = 'Agree'
'5' = 'Strongly agree';
run;
需要注意的几点:
- 字符型变量在定义值标签时,要在标签格式前面加上 $;
- proc format 后面需要添加分号;
- 每一个 value 的变量进行值标签设置时,在最后面才输入分号,比如上面的例子中 ‘M’ = ‘Male’ 后面是没有分号的,需要对下一个值进行设置时,我们回车后接着输入即可,而在 other = ‘Miscoded’ 此时我们已经输入完成,就在后面添加分号。
- 关于 gender 的值标签的设置 ,这里给出作者比较详细的解释:
Values for Gender are stored as M and F. Associating the $GENDER format with the variable Gender results in M displaying as Male, F displaying as Female, and missing values displayed as Not entered. The keyword other in the VALUE statement causes the text Miscoded to be printed for any characters besides M, F, or a missing value. - 关于 low 和 high ,这里同样给出作者的解释:
In the AGE format, the keywords LOW and HIGH refer to the lowest nonmissing value and the highest value, respectively.
Note: The keyword LOW when used with character formats includes missing values.
1.3 Adding a FORMAT statement in PROC PRINT
设置后好,我们就可以在proc print过程步中添加 format 的语句
title'Data Set SURVEY with Formatted Values';
proc print data=survey;
id ID;
var Gender Age Salary Ques1-Ques5;
format Gender $gender.
Age age.
Ques1-Ques5 $likert.
Salary dollar11.2;
run;
这里说明一下,在format后的使用值标签的时候,不要忘了圆心点,如上述程序中,gender、age 和 likert 后面都是带有一个圆心点。
打印的结果为:
欢迎共同学习交流~
二、参考资料
[1].《Learning SAS by Example, A Programmers Guide》
[2]. SAS中标签(Label)的使用