Let's say I have this dateset:
DATA foo; input a b $; datalines; 1 apple 1 banana 1 orange 2 grape 2 kiwi 3 strawberry ;
RUN
And I want to concatenate b grouping by a using PROC SQL. Maybe something like this:
PROC SQL; select concatenate(b) from foo group by a; QUIT;
How would I go about doing that with PROC FCMP?
Thank you
I'm sure one could torture PROC FCMP enough to create the function that you want. But because you want a function over several observations it will probably be very messy. Given your example, how about this data step, using the CATX function and a "SET ... BY" pair of statements inside a "do until last." loop?
DATA foo;
input a b $10.;
datalines;
1 apple
1 banana
1 orange
2 grape
2 kiwi
3 strawberry
;
RUN;
data want;
do until (last.a);
set foo;
by a;
length all_b_values $60;
all_b_values=catx(',',all_b_values,b);
end;
run;
Please vote for adding string aggregate functions to SAS/SQL at:
https://communities.sas.com/t5/SASware-Ballot-Ideas/create-string-summary-functions/idi-p/288035
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.