How to populate the string in reverse order. For example I have a variable under name
| Fname |
| Praveen Kumar |
| Gowtham Kuppal KK |
| Hari Haran M |
I want the output to be in the required format:
| Fname |
| Kumar Praveen |
| KK Kuppal Gowtham |
| M Haran Hari |
Thanks in Advance
One way
data have;
input Fname $50.;
datalines;
Praveen Kumar
Gowtham Kuppal KK
Hari Haran M
;
data want;
set have;
length FnameNew $ 50;
do _N_ = countw(Fname) to 1 by -1;
FnameNew = catx(' ', FnameNew, scan(Fname, _N_));
end;
run;
Result:
Fname FnameNew Praveen Kumar Kumar Praveen Gowtham Kuppal KK KK Kuppal Gowtham Hari Haran M M Haran Hari
What should happen if the name consists of four words?
I would recommend @PeterClemmensen's solution over the code in this post as it works with any number of names (see question from @andreas_lds).
When I saw "reverse" in the title I just thought how might the reverse() function be used, so just for demonstration purposes, the following produces the required result for the input data provided:
data want;
set have;
length name2 $ 50;
name2 = reverse(catx(' '
,reverse(scan(fname,1))
,reverse(scan(fname,2))
,reverse(scan(fname,3))
));
run;
Kind regards,
Amir.
You can place the fname word parts, reversely indexed in a loop, in an array (i.e. conceptually a 'reverse/split') and perform a single CATX after the loop.
Example:
data have;
input Fname $50.;
datalines;
Praveen Kumar
Gowtham Kuppal KK
Hari Haran M
;
data want;
set have;
array items(0:49) $50 _temporary_;
do _n_ = 1 to countw(fname);
items(dim(items)-_n_) = scan(fname, _n_);
end;
fname = catx(' ', of items(*));
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.