2015-10-18 124 views
2

使用PROC FORMAT AND FORMAT爲健身數據中的性別變量創建SAS格式。打印ID,Gender和PBar變量,以便格式在輸出中給出。Proc格式和格式SAS

我可以打印所有東西,但變量不打印正確。我究竟做錯了什麼?

PROC FORMAT; VALUE $Gender 'M'='Male'      
           'F'='Female'; 
data gym; input ID Gender $ PBar; 
datalines; 
3 M 6.5 
5 F 6.8 
2 F 5.8 
7 M 6.1 
6 F 7.9 ; 
format $gender.; 
PROC PRINT data=gym; 
run;quit; 

回答

0

您需要使用proc printformat聲明。此代碼的工作:

PROC FORMAT; VALUE $Gender 'M'='Male' F'='Female'; 

data gym; 
    input ID Gender $ PBar; 
    datalines; 
    3 M 6.5 
    5 F 6.8 
    2 F 5.8 
    7 M 6.1 
    6 F 7.9 
; *remember about proper syntax here; 

proc print data=gym; 
    format Gender $gender.; 
run; 
0

有2種方式做這件事的,
解決方案1 ​​

proc format; 
value $gender 
'M'='Male' 
'F'='Female' 
other= 'Unknown'; * Handle Missing Values;  
run; 

data gym; 
infile datalines dlm=' ' dsd missover; *Delimited Dataset handling Missing values; 
input ID Gender $ PBar; 
/* Format Statement here, the variable name was missing in your code */ 
format gender $gender.; 
datalines; 
3 M 6.5 
5 F 6.8 
2 F 5.8 
7 M 6.1 
6 F 7.9 
; 
run; 
proc print data=gym; 
run; 

此方案中,數據集有嵌入格式。因此,無論打印語句如何,您都將看到應用的格式。

解決方案2正如@torm所述,它將在打印時應用格式並在打印過程完成時消失。
因此,根據您的需要選擇您的選項。

1

Torm和Vishant提供了很好的建議和選擇。

雖然你沒有打印,但是你的格式聲明不完整。

它應該是:

format gender $gender.; *you didn't specify which variable needed formatted*; 
PROC PRINT data=gym; 
run;quit; 
0

的主要問題是,您的格式語句是DATA步和PROC PRINT步之間。所以它永遠不會被應用。在DATALINES(又名CARDS)語句之前移動它,使其成爲DATA步驟的一部分,或者在PROC PRINT之後移動它,使其成爲PROC步驟的一部分。