I need to write a funtion or module that creates a row vector called doit of dimmesion k(k-1)/2 that contains the pairwise differences between the k leverl means. I need nested do loops
doit[i,j]= Yi0 hat- Yjo hat
below is my code
a=3; # k level (maybe I can replace it with ncol (mymatrix)?)
doit={};
do i= 1 to a;
do j = i to a;
dime = group_mean[i]-groupmean[j];
doit= doit||dime;
end;
end;
but it does not work. ANy other suggestions to make it work? Any other solutions
I am not sure what you mean by the line of code that starts doit[i,j]=... however the code below that can be made to work. The problems are:
If you still cannot make it work, then please show us the messages that you are getting in the log.
In general it is a bad habit to grow matrices by concatenation inside a loop - this is very inefficient in terms of memory use. For a=3 you will probably not notice, but similar code with a=1000 would grind to a halt.
For a more on Ian's comment about concatenating inside a DO loop (as well as an alternative approach), see the article "Friends don't let friends concatenate results inside a loop."
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.