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;