Hi all
I have a quick question and I have been struggling for several days. I hope you could help me. Many thanks.
I hope to design a vector as follows: suppose there are two given vector a=[2 3 5], b=[1 2 3]
Here b indicates the frequency vector. I hope to generate a vector c=[2 3 3 5 5 5]. I am trying to use the repeat function in IML, but there is always something wrong
Thanks
Use the CUSUM function to get the indexes into a long vector that has sum(b) elements. Loop over the categories and use the REPEAT functions to fill up the vector:
proc iml;
a = {2 3 5};
b = {1 2 3};
cumFreq = 0 || cusum(b);
N = ncol(a);
v = j(sum(b), 1);
do i = 1 to N;
bIdx = 1 + cumFreq; /* begin index */
eIdx = cumFreq[i+1]; /* end index */
print i bIdx eIdx;
v[bIdx:eIdx] = repeat(a, b);
end;
print v;
Hi Rick
Many thanks. This is great ! And the function cusum( ) is extremely helpful !
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.