2015-10-18 109 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步骤的一部分。