Hi everyone,
I am fairly new to SAS and need your help. I have a dataset of school children with grades and food habits. Food habit section has five variables. each variable tells the no. of time one particular food is take. For example,
| ID | Grade | Food A | Food B | Food C | Food D |
| 101 | 7 | Yes | No | Yes | Yes |
| 102 | 8 | No | No | No | Yes |
| 103 | 7 | Yes | Yes | No | Yes |
How can I make a table showing grade and food food habit?
| Frequency | ||
| Grade 7 | ||
| Yes | 6 | |
| No | 2 | |
| Grade 8 | ||
| Yes | 1 | |
| No | 3 |
Would appreciate your help.
Thank you.
Khalid
Try this to generate desired output:
data have;
input ID Grade FoodA $ FoodB $ FoodC $ FoodD $;
datalines;
101 7 Yes No Yes Yes
102 8 No No No Yes
103 7 Yes Yes No Yes
;
proc transpose data=have out=want;
by id grade;
var FoodA FoodB FoodC FoodD;
run;
proc tabulate data=want;
class Grade col1;
table grade*col1=' ',n='Frequency';
run;
One way
proc tabulate data=have;
class grade fooda foodb foodc foodd;
table
grade *(fooda foodb foodc foodd),
n
;
run;
this does all the foods at once. Grade * fooda , n ; would do just fooda.
Try this to generate desired output:
data have;
input ID Grade FoodA $ FoodB $ FoodC $ FoodD $;
datalines;
101 7 Yes No Yes Yes
102 8 No No No Yes
103 7 Yes Yes No Yes
;
proc transpose data=have out=want;
by id grade;
var FoodA FoodB FoodC FoodD;
run;
proc tabulate data=want;
class Grade col1;
table grade*col1=' ',n='Frequency';
run;
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!
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.
Ready to level-up your skills? Choose your own adventure.