BookmarkSubscribeRSS Feed
Solph
Pyrite | Level 9

Hi,

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;

    run;

Many thanks.

2 REPLIES 2
Ksharp
Super User

What does your data look like ? Maybe you need :

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

Cynthia_sas
Diamond | Level 26

Hi:

  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

cynthia

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1100 views
  • 0 likes
  • 3 in conversation