首页 > 数据可视化 > SAS变量输入输出格式控制

SAS变量输入输出格式控制

2010年7月18日

读朱世武老师的《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.

字符变量的输出格式可以查阅下表。

再一次感谢朱世武老师的总结。

分类: 数据可视化 标签: , ,
  1. 2010年7月18日15:49 | #1

    @caoq
    嗯,的确强大,尤其编程能力。

  2. 2010年7月18日15:49 | #2

    @元元磐石
    其实不难! ;-)

  3. 2010年7月18日05:17 | #3

    刚上手sas,还不错,挺强大滴

  4. 2010年7月18日03:47 | #4

    最近也在弄统计,我是初学者,还不敢问及SAS,统计啊统计,应用学科学进去了是很有意思,可没入门的时候还是比较痛苦的

  1. 2011年11月29日22:27 | #1
  2. 2011年12月5日01:07 | #2
  3. 2011年12月6日20:39 | #3
  4. 2011年12月7日01:54 | #4
  5. 2011年12月8日19:31 | #5
  6. 2011年12月12日06:44 | #6
  7. 2011年12月12日11:58 | #7
  8. 2011年12月12日14:46 | #8
  9. 2011年12月13日20:45 | #9
  10. 2011年12月15日15:22 | #10
  11. 2011年12月16日08:33 | #11
  12. 2011年12月17日00:04 | #12
  13. 2011年12月17日08:45 | #13
  14. 2011年12月17日20:24 | #14
  15. 2011年12月20日05:32 | #15
  16. 2011年12月20日18:18 | #16
  17. 2011年12月23日01:31 | #17
  18. 2011年12月25日20:58 | #18
  19. 2012年1月1日00:51 | #19
  20. 2012年1月2日15:52 | #20
  21. 2012年1月8日13:35 | #21
  22. 2012年1月9日19:58 | #22
  23. 2012年1月11日05:15 | #23
  24. 2012年1月13日22:55 | #24
  25. 2012年1月14日15:57 | #25
  26. 2012年1月20日13:32 | #26
  27. 2012年1月21日14:55 | #27
  28. 2012年1月23日22:36 | #28
  29. 2012年1月31日15:28 | #29
本文的评论功能被关闭了.