使用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;
答案 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步骤的一部分。