BookmarkSubscribeRSS Feed
mgrzyb
Quartz | Level 8

Hello,

Happy 4th of July to all of you!

 

This is a simple question that I used to be able to do, but can't, for the life of me, figure out.  I have attached a document in WORD on how the data is displayed (it's wide longitudinal or multivariate form). I can easily transpose it to the long form. 

 

This is what I want to do, but there has to be a simpler way. I can do this little bit now, but I will be getting more data with repeated scorings. 

 

1. Attachment = wide form of data = the data I'm interested in is s1-s20.  I am taking the difference between them at each level. I already did the proc mixed, etc. but how could I write the code (in #2) easier? 

 

2.  Here is what I need do:

 

data want;

set have;

      d1=s2-s1;

            d2=s3-s2;

            d3=s4-s3;

            d4=s5-s4;

 

            d5=s6-s5;

            d6=s7-s6;

            d7=s8-s7;

            d8=s9-s8;

 

 

            d9=s10-s9;

            d10=s11-s10;

            d11=s12-s11;

            d12=s13-s12;

 

            d13=s14-s13;

            d14=s15-s14;

            d15=s16-s15;

            d16=s17-s16;

 

            d17=s18-s17;

            d18=s19-s18;

            d19=s20-s19;

 

            run;

 

 

How can I do this easier?   I thank you for your time. Marysia.

1 REPLY 1
FreelanceReinh
Jade | Level 19

Hello Marysia,

 

Good idea to use arrays here (no need for macros). Indeed, this is a typical use case for arrays.

 

data want;
set have;
array s[20]; /* handle existing variables s1, ..., s20 as array elements s[1], ..., s[20] */
array d[19]; /* create new variables d1, ..., d19 and handle them as array elem. d[1], etc. */
do i=1 to 19;
  d[i]=s[i+1]-s[i]; /* array indices allow to compute the differences in a loop */
end;
drop i; /* index variable is no longer needed */
run;

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

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!

Register now

How to Concatenate Values

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.

SAS Training: Just a Click Away

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

Browse our catalog!

Discussion stats
  • 1 reply
  • 918 views
  • 0 likes
  • 2 in conversation