—金陵夜寂凉风发,独上高楼望吴越。
白云映水摇空城,白露垂珠滴秋月。
01
SAS format:让数据更美观、更有意义的利器
什么是SAS format?
SAS format是一种用于显示或写入变量值的规则,它可以改变变量值在输出中的外观,但不改变变量值本身。SAS format分为两种来源:一种是标准的SAS format,由SAS系统提供;另一种是用户自定义的format,由用户通过PROC FORMAT过程创建。
SAS format分为四种类别:字符、日期和时间、ISO 8601和数值。每种类别下有多种格式可供选择,具体可以参考SAS官方文档(https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/a001263753.htm)。
如何使用SAS format?
使用SAS format有两种方式:一种是用FORMAT语句在DATA步或PROC步中与变量永久关联;另一种是用PUT语句或其他函数在输出中临时使用。
用FORMAT语句与变量关联
FORMAT语句的一般形式如下:
代码语言:javascript复制FORMAT variable-1 <. . . variable-n > < format > <DEFAULT= default-format >;
其中,
- variable-1 <. . . variable-n > 是指定要与格式关联的一个或多个变量。
- format 是指定要与变量关联的格式名称。
- DEFAULT= default-format 是指定一个临时的默认格式,用于显示没有在FORMAT语句中列出的变量。例如:
data test;
input name $ age height weight;
datalines;
Alice 25 165 55
Bob 30 180 75
Charlie 35 175 80
;
run;
proc print data=test;
format name $10. age 3. height comma5. weight comma6.2;
run;
输出结果如下:
name | age | height | weight |
---|---|---|---|
Alice | 25 | 165 | 55.00 |
Bob | 30 | 180 | 75.00 |
Charlie | 35 | 175 | 80.00 |
从输出结果可以看出,
- name变量使用了$10.格式,表示它是一个字符变量,并且占10个字符宽度。
- age变量使用了3.格式,表示它是一个数值变量,并且占3个数字宽度。
- height变量使用了comma5.格式,表示它是一个数值变量,并且占5个数字宽度,并且添加了千位分隔符。
- weight变量使用了comma6.2格式,表示它是一个数值变量,并且占6个数字宽度,并且保留两位小数,并且添加了千位分隔符和小数点。用PUT语句或其他函数临时使用 PUT语句或其他函数(如PUT、PUTN、PUTC等)可以在输出中临时使用SAS format来显示或写入变量值。这种方式不会改变数据集中的描述信息,也不会影响其他步骤中对变量的引用。例如:
data _null_;
set test;
put name $10. 'is' age comma3. 'years old.';
run;
输出结果如下:
Alice is 25 years old.
Bob is 30 years old.
Charlie is 35 years old.
从输出结果可以看出,
- name变量使用了$10.格式来显示字符数据,并且占10个字符宽度。
- age变量使用了comma3.格式来显示数值数据,并且添加了千位分隔符。SAS format有什么用处?SAS format有以下几点用处:可以使变量值更易于阅读和理解 通过使用合适的SAS format,我们可以使变量值在输出中更加美观、清晰和有意义。例如,
- 我们可以给数值添加千位分隔符、小数点、百分号等符号来增加可读性。
- 我们可以给日期、时间和日期时间添加斜杠、破折号、冒号等符号来增加可读性。
- 我们可以给字符数据添加引号、括号等符号来增加可读性。
- 我们可以根据不同的场景选择不同的显示方式,例如货币、电话号码、邮政编码等。可以节省存储空间和提高效率 由于SAS format不改变变量值本身,只改变显示或写入时的外观,因此不需要额外的存储空间或计算时间。这样既节省了资源,又提高了效率。可以方便地对变量值进行分类或分组 通过使用用户自定义的format,我们可以给不同的数值范围赋予不同的标签,从而实现分级或分段的效果。例如,
proc format;
value grade
low -< 60 = 'F'
60 -< 70 = 'D'
70 -< 80 = 'C'
80 -< 90 = 'B'
90 - high = 'A';
run;
data test;
input name $ score;
datalines;
Alice 85
Bob 65
Charlie 95
;
run;
proc print data=test;
format score grade.;
run;
输出结果如下:
name | score |
---|---|
Alice | B |
Bob | D |
Charlie | A |
从输出结果可以看出,成绩变量的值被替换为相应的等级标签,从而实现了分类或分组的效果。
总结
SAS format是一种用于显示或写入变量值的规则,它有四种类别:字符、日期和时间、ISO 8601和数值。SAS format有两种来源:一种是标准的SAS format,由SAS系统提供;另一种是用户自定义的format,由用户通过PROC FORMAT过程创建。SAS format有三点用处:可以使变量值更易于阅读和理解;可以节省存储空间和提高效率;可以方便地对变量值进行分类或分组。
尊敬的读者,首先感谢您对本篇文章的关注和阅读。在此,本小编想要说明的是,以上所述内容都是经过笔者认真整理和撰写的,但限于个人能力和知识水平等因素,难免存在疏漏或错误之处。如有不当之处,敬请包涵并指正,本小编将虚心接受您的批评与建议,并严谨修正文章。再次感谢您对本篇文章的支持与厚爱。