DATA Step, Macro, Functions and more

Scan Function

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 104
Accepted Solution

Scan Function

Hi All,

I have a data field that I need to split into two new fields. The field is a building code and then name of that building. Example: ID_Number= 1 Bond Street Building

I've been using this code to extract the ID_number:

do while(scan(ID_Number, i, " "));

new_id=scan(LID_Number, i, "  ");

output;

i+1;

end;

That code gives me a new_id field of 1. How do I get "Bond Street Building" into another field?

Thanks,

Sarah


Accepted Solutions
Solution
‎06-18-2013 10:41 AM
Super User
Posts: 5,079

Re: Scan Function

One possibility:

   field1 = scan(id_number, 1, ' ');

   field2 = substr(id_number, 2 + length(field1));

Scan is good for getting the first field, but not as good at getting the second field because that one contains multiple words.

Good luck.

View solution in original post


All Replies
Super User
Posts: 5,255

Re: Scan Function

There have been plenty of questions of this sort on the forum. Pls use the search facility to get your answer.

Data never sleeps
Super User
Posts: 17,777

Re: Scan Function

Look at the scan function modifiers, specifically 'ka'

SAS(R) 9.2 Language Reference: Dictionary, Fourth Edition

Frequent Contributor
Posts: 104

Re: Scan Function

Thanks Reeza, I'm unable to get that to work either. Is there a second step I'm missing? I've tried the following and the field NewName is not populated.

NewName=compress(ID_Number,,'ka');

NewName=scan(LDMS_ID_Number,2," ","ka");

NewName=scan(ID_Number," ","ka");

NewName = PRXCHANGE('s/[^a-zA-Z]//o',-1,ID_Number);

Solution
‎06-18-2013 10:41 AM
Super User
Posts: 5,079

Re: Scan Function

One possibility:

   field1 = scan(id_number, 1, ' ');

   field2 = substr(id_number, 2 + length(field1));

Scan is good for getting the first field, but not as good at getting the second field because that one contains multiple words.

Good luck.

Frequent Contributor
Posts: 104

Re: Scan Function

Thank you, that was exactly what I was looking for.

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 5 replies
  • 281 views
  • 0 likes
  • 4 in conversation