SAS Proc Freq显示计数类别

时间:2015-10-23 11:15:04

标签: sas proc

想知道如何在基础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频率

     

周日1

     

周一1日

     

周四1

     

周五1日

     

周六2

与样本SAS数据一起使用时。我想要的是包括列表中的其他工作日,即使它们没有匹配的行。 “星期二0星期三0”

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

1 个答案:

答案 0 :(得分:3)

您可以使用自己创建的DAYS格式提供有关要报告的“人口”天数的信息。 PROC FREQ不直接支持通过PROC SUMMARY或PROC TABULATE可以完成的任何事情的创建。在这个例子中,我使用PROC SUMMARY和PROC FREQ with 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;