SAS Proc Freq 显示类别和计数

SAS Proc Freq display categories with counts

想知道如何在 base SAS 中完成以下操作。我有以下代码。

libname SASData  '/folders/myfolders/Datafiles';

data chap9ques6;
    set SASData.medical(keep=VisitDate);

    DayOfWeek = weekday(VisitDate);
run;

proc format;
    value Days 1='Sunday' 2='Monday' 3='Tuesday' 4='Wednesday' 5='Thursday' 6='Friday' 7='Saturday';
run;

proc freq data=chap9ques6;
    tables DayOfWeek /nocum nopercent missprint;

    Format DayOfWeek Days.;
run;

产生这样一个可接受的结果。

FREQ 程序

DayOfWeek Frequency

Sunday 1

Monday 1

Thursday 1

Friday 1

Saturday 2

与示例 SAS 数据一起使用时。我想要的是将其他工作日包含在列表中,即使它们没有匹配的行。 "Tuesday 0 Wednesday 0"

如何在最终输出中包含这些行?

您可以使用您创建的 DAYS 格式提供有关您要报告的 "population" 天的信息。 PROC FREQ 不直接支持可以使用 PROC SUMMARY 或 PROC TABULATE 完成的无中生有的创建。在此示例中,我将 PROC SUMMARY 和 PROC FREQ 与 WEIGHT 语句和 ZEROS 选项一起使用。

data chap9ques6;
   DayOfWeek = 3;
   run;

proc format;
   value Days 1='Sunday' 2='Monday' 3='Tuesday' 4='Wednesday' 5='Thursday' 6='Friday' 7='Saturday';
   run;
proc summary data=chap9ques6 nway completetypes;
   class dayofweek / preloadfmt;
   format dayofweek days.;
   output out=counts;
   run;
proc print;
   run;

proc freq data=counts;
   tables DayOfWeek /nocum nopercent missprint;
   Format DayOfWeek Days.;
   weight _freq_ / zeros;
   run;