This might be a weird question. I have a data set contains data like agree
, neutral
, disagree
...for many questions. There is not so many observations so for some question, one or more options has frequency of 0, say neutral. When I run proc freq
, since neutral shows up in that variable, the table does not contain a row for neutral. I end up with tables with different number of rows. I would like to know if there is a option to show these 0 frequency rows. I will also need to run proc gchart
for the same data set, and I will run into the same problem for having different number of bars. Please help me on this. Thank you!
This depends on how exactly you are running your PROC FREQ
. It has the sparse
option, which tells it to create a value for every logical cell on the table when creating an output dataset; normally, while you would have a cell with a missing value (or zero) in a crosstab, if that is output to a dataset (which is vertical, ie each combination of x and y axis value are placed in one row) those rows are left off. Sparse makes sure that doesn't happen; and in a larger (n-dimensional) crosstab, it creates rows for every possible combination of every variable, even ones that don't occur in the data.
However, if you're just doing
proc freq data=mydata;
tables myvar;
run;
That won't help you, as SAS doesn't really have anything to go on to figure out what should be there.
For that, you have to use a class
variable procedure. Proc Tabulate
is one of such procedures, and is similar to Proc Freq
in its syntax (sort of). You need to either use CLASSDATA
on the proc statement, or PRINTMISS
on the table statement. In the former case, you do not need to use a format, I don't believe. In the latter case (PRINTMISS
), you need to create a format for your variable (if you don't already have one) that contains all levels of the data that you want to display (even if it's just an identity format, e.g. formatting character strings to identical character strings), and specify PRELOADFMT
on the proc statement. See this man page for more details.