SAS 输入与输出格式
SAS 输入与输出格式
一、认识SAS中的数据格式
SAS 中的格式有:
- 数字型
- 字符型
- 日期型
1、其中数字型的格式有一下集中表示方式:
- 整型数值:321
- 浮点数值:321.123
- 带逗号的数值:123,21
- 到$的数值:$12321
- 带$符号的逗号浮点数据:
2、以字符型的数据格式只有一种,字符长度
3、日期格式分以下几种:
- 日期型:0值(1960.1.1),其他日期为与其的差值
- 时间型:0值(0时0分0秒)
- 日期时间型:0值(1960年1月1日0时0分-秒)
二、对数值型数据的输入与输出格式处理
常规输入格式为:w.d
w.d : 读入宽度为w的原始数据,并存为SAS数值,也能自动读入以浮点方式的原始数据。
常见的输出格式为:bestw.d, w.d(将数值不超过d位小数及总宽度不超过w位的定点数表示) 和 Ew.(表示宽度不超过w的浮点数表示)
1、整型数值:321 (可以采用输入格式进行表示)
2、浮点数值:321.123(可以采用输入格式进行表示)
3、带逗号的数值:123,21
data work.test1; input x1 comma7. x2 comma7.; datalines; 123,112 332,1 412,3 321,678 ; run; proc print data=work.test1; run;
使用comma7.来对数据进行特殊的读取。
打印结果如下:
4、到$的数值:$12321
data work.test1; input x1 dollar7. x2 comma7.; datalines; $123,112 332,1 $412,3 321,678 ; run; proc print data=work.test1; run;
三、字符串的数据格式
1、输入格式:$w. 和 $CHARw.
共同特点:缺省值均为变量的长度
不同点:
$w. :必须指定w的值,不保留字符串前的空格
$CHARw.:w的缺省值为8,保留字符串前的空格
2、输出格式:$w. 和 $CHARw.
共同特点:保留字符串前的空格
四、日期时间型
1、日期输入格式:YYMMDDw.
(1)读入的数据形式为:yymmdd / yyyymmdd
W:6-32,缺省为6
其他格式:MMDDYYw.和DDMMYYw.
(2)MMDDYYw.读入的数据形式为:mmddyy/ mmddyyyy
(3)DDMMYYw.读入的数据形式为:ddmmyy/ddmmyyyy
2、日期输出格式:YYMMDDxw.
(1)输出的数据形式为:yymmdd/yyyymmdd
w:2-10(x为N时,2-8),缺省为8
(2)YYMMDDw.相当于YYMMDDDw.(第三个D表示-)
(3)MMDDYYxw.和DDMMYYxw.
3、特殊日期输入/输出格式:Datew.
输入/输出日期的格式为:ddmmmyy/ddmmmyyyy
缺省方式为DATE7.
4、时间输入格式:TIMEw.
读入的时间形式为:hh:mm:ss.ss
5、时间输出格式:TIMEw.d
d:可指明秒数包含的小数位数
输出时总带有分隔符(:)
宽度不够时,先显示小时数,在显示分钟,在是秒数
6、日期时间输入格式:DATETIMEw.
读入的日期时间形式为:ddmmmyy hh:mm:ss.ss /ddmmmyyyy hh:mm:ss.ss
w:13-40,缺省为18
7、日期书简输出格式:DATETIMEw.d
输出格式:ddmmmyy hh:dd:ss.ss / ddmmmyyyy:hh:mm:ss.ss
w:7-40,缺省为16
五、自定义格式
语法:
proc format;
value 自定义输出格式名字 定义的格式;
run;
自定义输出格式名字:应符合SAS的命名要求,注意最后一个字符不能是数字。
定义的格式:原始值=格式化的输出值
如以下是原始的数据代码:
data work.qespart; input id$ sex height weight band46$; cards; cnw1r01 2 154 49 C cnw1r02 1 169 64 B cnw1r03 1 199 54 C cnw1r04 2 133 90 D ; run; proc print data=work.qespart; run;
使用自定义格式编辑输出格式:
proc format ;
value sexfmt 1='Male' 2='Male';
value $bandfmt 'A'='增加' 'B'='不变' 'C'='减弱';
run;
data work.qespartfmt;
set work.qespart;
format sex sexfmt. band46 $bandfmt.;
run;
proc print data=work.qespartfmt;
run;