![]() |
|
SAS Tip
of the Month There are many ways within SAS to get the last word in a character variable but my old favorite is still to start from the beginning and scan across the variable finding the position of the last word and then grabbing that word and saving it in a variable. The following example illustrates the method: The SAS Code data _null_;
infile cards;
input name $ 1-15;
length surname $15;
i=1;
do while(scan(name,i) ne "");
i+1;
end;
surname=scan(name,i-1);
put @1 name= @25 surname=;
cards;
Alfred Domett
William Fox
Edward Stafford
William Fox
Henry Sewell
;
run;
The Output to the Log name=Alfred Domett surname=Domett
name=William Fox surname=Fox
name=Edward Stafford surname=Stafford
name=William Fox surname=Fox
name=Henry Sewell surname=Sewell
There are other methods, including ones that start at the end, but this one is something I carry in my toolbox. I get asked from time to time if there is a similar routine for Microsoft Excel. There is no inbuilt function for this but here is some VBA code that I use to create a function that when called will do the job: Function LastWord(String_Text As String)
Dim HaveGotIt As String
i = 1
Do Until HaveGotIt Like (" *")
HaveGotIt = Right(String_Text, i)
i = i + 1
Loop
LastWord = Trim(HaveGotIt)
End Function
I do hope you find this tip useful. |
|
| ________________________________ Updated September 5, 2005 |
|