Hello
I have a dataset
data have; input x $ Y $; datalines 08 c1 08 c2 09 c1 09 c2 09 c3 10 c1 10 c2 10 c3 10 c4 ; run;
I want my output to be
08c1-08c2 09c1-09c3 10c1-10c4
data have;
input x $ Y $;
datalines;
08 c1
08 c2
09 c1
09 c2
09 c3
10 c1
10 c2
10 c3
10 c4
;
run;
data want(keep=NewVar);
set have;
by x;
if first.x then NewVar=cats(x, Y);
if last.x then do;
NewVar=catx('-', NewVar, cats(x, Y));
output;
end;
retain NewVar;
run;
Not the most beautiful, but works in this case...:)
proc sql;
create table want as
select cats (x, min(y),'-',x,max(y)) as mix
from have
group by x
;
quit;
//Fredrik
data have;
input x $ Y $;
datalines;
08 c1
08 c2
09 c1
09 c2
09 c3
10 c1
10 c2
10 c3
10 c4
;
run;
data want(keep=NewVar);
set have;
by x;
if first.x then NewVar=cats(x, Y);
if last.x then do;
NewVar=catx('-', NewVar, cats(x, Y));
output;
end;
retain NewVar;
run;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
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!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.