- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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*/
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
i couldn't see any data in output. All i can see is table of pr_id,pr_qty,Info,pr_name.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Show and example of what you mean.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content