SAS proc 格式的字符范围值

问题描述 投票:0回答:1

我想按变量 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$.;`

sas
1个回答
0
投票

在 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 ;
© www.soinside.com 2019 - 2024. All rights reserved.