天天看點

SAS 基礎(3) 自定義輸入和輸出格式

自定義輸入和輸出格式

      • 3.1 用 informat 和 format 自定義格式
      • 3.2 用picture 照個輸出模版

前期回顧: SAS 基礎(2)SAS變量的輸出格式

.

3.1 用 informat 和 format 自定義格式

基本形式:

proc format
invalue <$>  格式名 變量值或範圍1 = 輸出格式1 ...... ;
value <$>  格式名 變量值或範圍1 = 輸出格式1 ...... ;
picture 模闆名 <數值範圍>;
變量值或範圍 是字元,需要在" 格式名 " 前面加$符号。<$> 是可選内容。
           

例如:

  • invalue $ gender 1 = “male” 2 = “female” ;

    解釋:建立輸入格式gender,當輸入 1 2時 自動變為 male ,female。male是字元要加 $

  • invalue lxfmt 1-4=same 99 = . ;

    解釋:建立輸入格式 lxfmt,當輸入值為 1~ 4時,保持原有值不變,輸入99變為 ‘.’ 。

  • value $ grade “a”-“g”=“fair” “o”,“u” = “other” ;

    解釋:建立輸出格式 grade,輸入值介于a~g之間,輸出位“fair”, o和u 輸出位 other。

  • value age low-<40=30 low-<50=40 50-high=50 ;

    解釋:建立輸出格式 age 當輸入值 < 40 輸出為30 ,>=40 &< 50 輸出為40, >50 輸出 50 。

  • value score low-59=“不及格” other=“及格”

    解釋:建立輸出格式 score 輸入值<=59 輸出為不及格,其餘輸出 及格。

.

例子:根據實際年齡按每10歲劃分年齡組

proc format;
invalue fage low-<40=30 40-<50=40 50-<60=50 60-high=60;

data age;
input id age fage.; 	/* 把age 與 fage 關聯起來 */
cards;
1 36
2 43
3 55
4 78
5 60
6 59
;
proc print;
run;
           
SAS 基礎(3) 自定義輸入和輸出格式

.

例子:輸入一些固定又煩瑣的文本。輸入50名大學生所在的年級,分别是Freshman、Sophomore、Junior、Senior。

proc format; 
invalue $grade 1="Freshman" 2="Sophomore" 3="Junior" 4="Senior" ; 
value fscore low-<60="不及格" 60-<80="及格" 80-high="優秀"; 
data Dgrade; 
input id Dgrade: $grade20. score;  /* grade本身的寬度是1,但是 指定的輸入格式是Freshman、Sophomore、Junior、Senior,他們的寬度都至少>1,是以 要預定義夠大的 寬度 如grade20.  */

format score fscore.;  /* 把value 的fscore 關聯起來與 score,注意不要把proc format與 format 混淆了。  */
cards; 
1 1 60 
2 4 59 
3 3 80 
4 2 79 
; 
proc print; 
run;
           
SAS 基礎(3) 自定義輸入和輸出格式

.

3.2 用picture 照個輸出模版

可以自己定義顯示結果,例如 在資料集中的 profit 顯示為 “¥” 的形式,把prop顯示為 “%” 的形式 。

proc format ; 
picture pft low-high = "0,000,000"(prefix="¥"); 
picture pro low-high = "09.990%";
/*
	pro的定義有0 有9,0的作用是自動舍去數字前面的0,而1-9不會舍去;
例如:0.72指定“00.00%”那會顯示成“72%”,“99.99%”會顯示成 00.72%,
“09.99%”則顯示0.72%;
	low-high的範圍就是從最低值到最高值。
*/
run; 
data profit; 
input profit prop; 
format profit pft. prop pro. ; 
cards; 
29893050 16.25 
36580070 21.301 
; 
proc print; 
run;
           
SAS 基礎(3) 自定義輸入和輸出格式
SAS