I have some data the looks like this
Subject Start End Var1 V2
1 1 4 xx yy
1 5 6 xx zz
2 1 3 yy ww
...
I want it to look like this:
Subject Time Var1 V2
1 1 xx yy
1 2 xx yy
1 3 xx yy
1 4 xx yy
1 5 xx zz
1 6 xx zz
2 1 yy ww
2 2 yy ww
2 3 yy ww
...
What would my program array look like?
I think this should work.
data HAVE;
input SUBJECT $ START END VAR1 $ VAR2 $;
datalines;
1 1 4 xx yy
1 5 6 xx zz
2 1 3 yy ww
;
run;
data WANT (drop= START END);
retain SUBJECT TIME VAR1 VAR2;
set HAVE;
do TIME = START to END;
output;
end;
run;
This wouldn't require an array. SAS data steps loop automatically so no need to control that. You need to output multiple records per line so create a loop and use an explicit OUTPUT statement to print that line out once for each time.
In SAS arrays are used for working with multiple variables with the data on a single row, though you can across rows it's a bit more complex. It is not used to represent columns however.
Here's a tutorial on using Arrays in SAS
https://stats.idre.ucla.edu/sas/seminars/sas-arrays/
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.