data m;
input info $ 1 - 50;
cards;
101 pencils 39
102 parker pens 21
103 apple ipod touch & shuffle 09
104 dell studio laptop 03
run;
/*get the starting nos as pr_id, ending nos as pr_qty and the rest as pr_name*/
One way
data want;
set m;
pr_id=scan(info, 1);
pr_qty=scan(info, -1);
pr_name=substr(info, findw(info, scan(info, 2)), findw(info, scan(info, -1))-findw(info, scan(info, 2)));
run;
I like this offering, one thing I would add is once you have pr_id and pr_qty, you could drop that from the first variable and avoid the longer code:
data want;
set m;
pr_id=scan(info, 1);
pr_qty=scan(info, -1);
pr_name=tranwrd(tranwrd(info,pr_id,""),pr_qty,"");
run;
Just an option.
i couldn't see any data in output. All i can see is table of pr_id,pr_qty,Info,pr_name.
Another possibility is to use PRX functions, which enables you to check for numbers in the right places:
data want;
set m;
length pr_id $5 pr_name $40 pr_qty $5;
prxid=prxparse('/^(\d+) (.+) (\d+)\s*$/');
if not prxmatch(prxid,info) then
error 'No match';
else do;
pr_id=prxposn(prxid,1,info);
pr_name=prxposn(prxid,2,info);
pr_qty=prxposn(prxid,3,info);
end;
keep info pr_:;
run;The PRX string searches for beginning of string "^", some digits "\d+" which are placed in the first capture buffer (the "()" around), a blank, a string which can be anything (".+", in the second capture buffer), a blank, some digits in the third capture buffer, and finally some whithespace "\s*" and end of string "$". You then use PRXPOSN to get at the capture buffers.
Show and example of what you mean.
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.