I have a data set having a single column of names and 100 rows .
Is there way to combine names from every 10 rows into a string?
For example my data may be like this
aaaa
bbbb
abbc
ddda
....
...
What I want ot get is a new table with
aaaa bbbb abbbc
ddda efgh ijkl lmnop
.....
Is there a way to do it?
It's probably a bad idea that will only make your life harder down the road. But it's not difficult:
data want;
length string $ 200;
do _n_=1 to 10 until (done);
set have end=done;
string = catx(' ', string, name);
end;
drop name;
run;
First group the data by 10 records each and then use proc transpose by the grouped variable.
DATA have(drop=i);
do i=1 to 200;
val=put(i,3.);
output;
end;
run;
data want;
retain group;
set have;
IF _N_=1 then group=1;
else if MOD(_N_-1,10)=0 then group+1;
run;
proc transpose data=want out=want1;
by group;
var val;
run;
It's probably a bad idea that will only make your life harder down the road. But it's not difficult:
data want;
length string $ 200;
do _n_=1 to 10 until (done);
set have end=done;
string = catx(' ', string, name);
end;
drop name;
run;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.