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;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.