Hi,
here is the dataset where all the value are store as single string.
obs info
1 101 pencils 47
2 102 parker pens 28
3 103 apple ipod touch & shuffle 13
4 104 dell studio laptop 03
I want first starting number under id and ending number under qty and rest under name. please help me to solve out this problem.
With hope I undertood your query:
data want;
infile datalines;
input info $60. ;
id = input(scan (info,1,' '), 3.);
qty_x = scan (info,-1,' ');
qty = input(qty_x,best6.);
name = substr(info,5, length(trim(info) - 4 - length(qty_x)));
drop qty_x;
run;
Are you reading this from a text file or do you have it in a SAS dataset already?
data have; infile cards truncover; input obs info $80.; cards; 1 101 pencils 47 2 102 parker pens 28 3 103 apple ipod touch & shuffle 13 4 104 dell studio laptop 03 ; run; data want; set have; id=scan(info,1); name=prxchange('s/^\d+|\d+$//',-1,strip(info)); qtr=scan(info,-1); run;
data test;
infile cards truncover ;
input var $100.;
id=scan(var,1,'0123456789','k');
qty=scan(var,2,'0123456789','k');
name=scan(var,1,,'d');
cards;
101 pencils 47
102 parker pens 28
103 apple ipod touch & shuffle 13
104 dell studio laptop 03
;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.