想知道如何在基础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”
如何在最终输出中包含这些行?
答案 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;