Help using Base SAS procedures

A Proc Tabulate question

Frequent Contributor
Posts: 109

A Proc Tabulate question


I grew to like using proc tabulate for output tables, but sometimes it's hard to follow the logic.

Say if I want to run a crosstab of health condition by sex (so column %) for each year and each country. I tried the following but it's giving me the column percent across all cases, not within a country and for each year. How do I change the? I didn't make a sample data but if needed, I could do it.

proc tabulate data=have;

    class country year heath_status sex;

    table (country year _status), sex* COLPCTN;


Many thanks.

Super User
Posts: 10,778

Re: A Proc Tabulate question

What does your data look like ? Maybe you need :

table (country year _status), sex* COLPCTN   all*COLPCTN  ;

Posts: 9,368

Re: A Proc Tabulate question


  I see that your TABLE statement doesn't have any * (asterisk) operators. Also, you show health_status in the CLASS statement, but then use _status in the TABLE statement. Does your code even produce output? Do you have error messages in the LOG that _status is not defined?

  You can define special denominators for percents using the < and > operators. Generally, you use them in conjunction with nesting using the * operator. The TABULATE documentation has some examples of using a special denominator definition.

Base SAS(R) 9.3 Procedures Guide, Second Edition


Ask a Question
Discussion stats
  • 2 replies
  • 3 in conversation