DATA Step, Macro, Functions and more

Parsing Data from Text Fields

Reply
New Contributor
Posts: 2

Parsing Data from Text Fields

[ Edited ]

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.

Trusted Advisor
Posts: 1,369

Re: base sas

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;

Super User
Posts: 17,781

Re: Parsing Data from Text Fields

Are you reading this from a text file or do you have it in a SAS dataset already?

Super User
Posts: 9,671

Re: Parsing Data from Text Fields


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;

Respected Advisor
Posts: 3,124

Re: Parsing Data from Text Fields

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
;
Ask a Question
Discussion stats
  • 4 replies
  • 280 views
  • 0 likes
  • 5 in conversation