I have made a variable called age_group which has been dervied from an existing variable age. the variable age_group is split up as follows:
age_group=1 if age<35
age_group=2 if 35<=age<=75
age_group=3 if age>75.
When I run a proc freq on the data, age_group=3 does not appear in the output table because there are 0 observations of this in the data. I am wandering how I can get the proc freq to display a frequency of 0 for age_group=3.
Thanks
Why do you need to use proc freq? Proc freq provides counts of data which is present. In most scenarios where I have to do this, then I merge the results back to the distinct list of options:
proc sql;
create table WANT as
select COALESCE(A.AGE_GROUP,B.AGE_GROUP) as AGE_GROUP,
case when B.N=. then 0 else B.N end as N
from (select distinct AGE_GROUP from HAVE) A
full join MEANS_OUTPUT B
on A.AGE_GROUP=B.AGE_GROUP;
quit;
However, if you use the right procedure, proc means, then you can use nway (and also multi-label formats if you need to combinations and such like) and do it in one proc means step.
Check out this solution
https://communities.sas.com/t5/SAS-Procedures/PROC-FREQ-Include-Zero-Counts/td-p/325505
proc freq does not have an easy option for this, but proc means does. Do you need proc freq?
data CLASSES;
AGE=30; output;
AGE=60; output;
AGE=90; output;
data HAVE;
AGE=60; output;
AGE=90; output;
proc means data=HAVE classdata=CLASSES nway;
class AGE;
output out=FREQ;
run;
| AGE | N Obs |
|---|---|
| 30 | 0 |
| 60 | 1 |
| 90 | 1 |
Why do you need to use proc freq? Proc freq provides counts of data which is present. In most scenarios where I have to do this, then I merge the results back to the distinct list of options:
proc sql;
create table WANT as
select COALESCE(A.AGE_GROUP,B.AGE_GROUP) as AGE_GROUP,
case when B.N=. then 0 else B.N end as N
from (select distinct AGE_GROUP from HAVE) A
full join MEANS_OUTPUT B
on A.AGE_GROUP=B.AGE_GROUP;
quit;
However, if you use the right procedure, proc means, then you can use nway (and also multi-label formats if you need to combinations and such like) and do it in one proc means step.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.