hello,
I want to output observation "Visit" for all subjects.
data have:
| subject | visit |
| 001 | monday |
| 001 | friday |
| 002 | monday |
| 003 | monday |
| 003 | tuesday |
| 003 | wednesday |
data want:
| subject | visit |
| 001 | monday |
| 001 | tuesday |
| 001 | wednesday |
| 001 | thursday |
| 001 | friday |
| 002 | monday |
| 002 | tuesday |
| 002 | wednesday |
| 002 | thursday |
| 002 | friday |
| 003 | monday |
| 003 | tuesday |
| 003 | wednesday |
| 003 | thursday |
| 003 | friday |
You need a list of subjects and a list of visits.
Let's assume the list of subjects comes from the dataset you already have.
What is the source for the list of visits?
Perhaps something like this:
data visits;
input visit $20.;
cards;
monday
tuesday
wednesday
thursday
friday
;
So a simple join like this should generate what you want.
proc sql;
create table want as select *
from (select distinct subject from have)
, vists
order by subject, visit
;
quit;
You need a list of subjects and a list of visits.
Let's assume the list of subjects comes from the dataset you already have.
What is the source for the list of visits?
Perhaps something like this:
data visits;
input visit $20.;
cards;
monday
tuesday
wednesday
thursday
friday
;
So a simple join like this should generate what you want.
proc sql;
create table want as select *
from (select distinct subject from have)
, vists
order by subject, visit
;
quit;
You apparently want a Cartesian crossing of subject and visit (although you don't have Thursday in your sample data, but do have it in your desired output. Use the "completetypes" option of PROC SUMMARY:
data have;
input subject visit :$9. ;
format subject z3.;
datalines;
1 Monday
1 Friday
2 Monday
3 Monday
3 Tuesday
3 Wednesday
run;
proc summary data=have completetypes nway;
class subject visit ;
output out=want (drop=_type_);
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 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.