SAS变量输入输出格式控制
读朱世武老师的《SAS编程技术教程》,的确是一本不错的书籍,至少很适合我。因为对于我,对SAS算初窥门径,经常在编程的时候忘记一些函数,或者寻找软件的一些功能,这本书恰恰就是如此,作为刚刚入门的书籍并不好,但是作为参考书,很好,至少把很多函数和命令分门别类清晰的表述清楚了。其实国内的书籍都很少能够达到这个层次。这本书相对于SAS帮助文档来说,查阅比较方便,因为sas帮助文档不能搜索,而这本书更体现参考书的价值。
最近要处理大量的日期、和会计(带千位符)的数字,以前处理这类数据都是从excell导入的,操作之后发现,导入的数据有时会出现一些小问题,而且还要用insight一个个的编辑变量,比较麻烦,希望能够通过cards一次性录入。方便以后存储和备份,因为随着SAS应用越来越多,我更倾向于用SAS来创建、管理我的研究数据。为此,我阅读了朱老师关于变量输入与输出格式控制的内容,笔记如下:
-
1、输入格式
输入格式是SAS系统用来读入数据值的一个指令。
输入格式形式
<$> INFORMAT<W>.<D>
选项说明:
| $ | 字符格式 |
| W | 输入数据的列数 |
| D | 数值输入格式中保留小数的位数 |
| Informat | 用来规定数据的输入格式 |
通用规则:
所有输入格式必须包含一个点(.)作为名字的一部分;
对于省略W和D值的输入格式,使用系统缺省值。
-
2、列格式输入
input @6 date ddmmyy10. @+1 stocd $ 8. oppr 8.2;
说明:从第6列开始以DDMMYY10.格式读入变量DATE, 第7列开始以长度为8的字符格式读入变量STOCD,然后以数值格式8.2读入变量OPPR。
查看都安装了那些模块,和一些系统信息。
-
3、数值与字符相互转换的方法
字符转换数值
1 2 3 4 5 | data; x='98.6'; y=input(x, 4.); put x= y=; run; |
说明:INPUT函数和w.d输入格式将X的字符值转换为一个数值Y。还有一个更简单的,将字符值转换为数值的方法。
1 2 3 4 5 | data; x='98.6'; y=x-0; put x= y=; run; |
数值转换为字符
1 2 3 4 5 | data; x=2557898; y=put(x, $8.); put y; run; |
例中,用PUT函数得到正确结果,即字符型2557898.
1 2 3 4 5 | data; x=2557898; y=put(x, $3.); put y; run; |
例中,Y的结果为3E6.
4、读入会计格式字符
读入类似11,222.11格式的字符。
1 2 3 4 5 6 7 8 | data a; input x; informat x comma12.4; cards; 12,345.1234 22,345.1234 ; run; |
当然,你可以按照下表,更换不同的输入格式以读入不同格式的数据。

其中,COMMAw.d 用于输入格式读入包含字符的数值,这些字符包括: 逗号、空格、 $、%、破折号、圆括号等。
5、输入输出日期
SAS系统存贮日期值为1960年1月1日到这个日期之间的天数。
1 2 3 4 5 6 7 | data a; input date mmddyy10.; cards; 10-01-2002 10/01/2002 ; run; |
此时,日期中存储的是天数,当使用insight等的时候,不直观,所以一般用下面的程序录入数据。
1 2 3 4 5 6 7 8 | data a; input date mmddyy10.; format date yymmdd10.; cards; 10-01-2002 10/01/2002 ; run; |
当然,你还可以根据下表,输入不同格式的日期数据。

此时,存储的虽然仍然是天数,但是是根据您的要求显示了。还可以根据下面的表,设置具体的显示形式。


-
5、PUT函数
PUT函数可将数值转换为字符(如前所述),但最常用的是改变变量的字符输出格式。
例1: 转换数值变量cc的值为三个字符的十六进制表达式。
1 2 3 4 5 | data; cc=16; cchex=put(cc,hex3.); put cc hex3.; run; |
结果为010.
例2: 将数值CC转换为字符值。
1 2 3 4 | data; cc=16; cc=put(cc,3.); run; |
例3: 输出时美元符号放在数值前面,中间加上千分号。
1 2 3 4 | data; Netpay=1254.71; put @53 netpay dollar10.2; run; |
输出值为$1,254.71.

@caoq
嗯,的确强大,尤其编程能力。
@元元磐石
其实不难!
刚上手sas,还不错,挺强大滴
最近也在弄统计,我是初学者,还不敢问及SAS,统计啊统计,应用学科学进去了是很有意思,可没入门的时候还是比较痛苦的