我想按变量 SchoolSize 对数据集进行分组,但是使用 SAS 中的 proc 格式语句将中小型学校规模分组在一起。我下面的代码不会返回按中小型学校规模分组的均值表。它按照原始 SAS 文件中的指定将学校规模分别分组为 L、M 和 S。原始代码和备用代码都没有给出我需要的分组。
原代码:
proc format;
`value $SchoolSize
"L"="Large"
OTHER="Small and Medium";`
run;
title "Means of Data Set COLLEGE5";
proc means data=college5 mean median maxdec=2;
class SchoolSize;
var ClassRank GPA;
format SchoolSize SchoolSize$.;
run;
备用代码-1:
proc format;
`value $SchoolSize
"L"="Large"
"S"="Small and Medium"
"M"="Small and Medium";`
run;
title "Means of Data Set COLLEGE5";
proc means data=college5 mean median maxdec=2;
class SchoolSize;
var ClassRank GPA;
format SchoolSize SchoolSize$.;
备用代码-2:
proc format;
`value $SchoolSize
"L"="Large"
"S", "M"="Small and Medium";`
run;
title "Means of Data Set COLLEGE5";
proc means data=college5 mean median maxdec=2;
class SchoolSize;
var ClassRank GPA;
format SchoolSize SchoolSize$.;`
在 FORMAT 语句中,$ 符号位于格式名称之前。所以你想要
$schoolsize.
而不是 schoolsize$.
我很惊讶代码不会生成错误消息。此外,PROC FORMAT 步骤中还有额外的单引号。除此之外,我认为您展示的所有三种方法都应该有效。我倾向于喜欢最后一种方法。以下作品。
data class ;
set sashelp.class ;
if _N_<=4 then SchoolSize='S' ;
else if _N_ <=8 then SchoolSize='M' ;
else SchoolSize='L' ;
run ;
proc format;
value $SchoolSize
"L"="Large"
"S","M"="Small and Medium"
;
run;
proc means data=class ;
class schoolsize ;
var weight ;
format schoolsize $schoolsize. ;
run ;