Proc格式和格式SAS

时间:2015-10-18 19:18:39

标签: sas

使用PROC FORMAT和FORMAT在健身房数据中为性别变量创建SAS格式。打印ID,Gender和PBar变量,以便在输出中给出格式。

我可以打印所有内容,但变量不能正确打印。我做错了什么?

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;

4 个答案:

答案 0 :(得分:1)

Torm和Vishant给出了很好的建议和选择。

你的原因是没有打印的原因是你的格式声明不完整。

应该是:

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

答案 1 :(得分:0)

您需要在format内使用proc print语句。此代码有效:

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;

答案 2 :(得分:0)

有两种方法可以做到这一点,
解决方案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;  

在此解决方案中,数据集具有嵌入格式。因此,无论print语句如何,您都会看到应用的格式。

解决方案2 ,如@torm所述,它将在您打印时应用格式,并在打印过程完成时消失。
因此,根据您的需要选择您的选项。

答案 3 :(得分:0)

主要问题是您的FORMAT语句位于DATA步骤和PROC PRINT步骤之间。所以它永远不会被应用。在DATALINES(又名CARDS)语句之前移动它,使其成为DATA步骤的一部分,或者在PROC PRINT之后移动它,使其成为PROC步骤的一部分。