BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
KrishnaChandra
Calcite | Level 5

hi i have a simple data set then how can i separate the data set values to each variable like dep_id ,dept_name,dep_qty.Please help ?

data a;

input info $1 - 50;

cards;

101 pencil 57

102 parker pen 24

103 hp studion shuffle n 10

104 samsung galexy ace 29

run;

i already solved the problem.But i need to know any easy way of doing the task simply.

i put my code on below..Please do check it and make some replies

data b;

set a;

pdt_id=input(scan(info,1,' '),3.);

xyz=substr(info,5);

pdt_nam=length(substr(info,5));

name=input(substr(xyz,1,pdt_nam-2),$20.);

pdt_qty=input(substr(xyz,anydigit(xyz)),2.);

label  pdt_id=Product Id

       name=Product Name

       pdt_qty=Product Quantity;

drop pdt_nam;

drop info;

drop xyz;

runn;

Krishnachandran

1 ACCEPTED SOLUTION

Accepted Solutions
Ksharp
Super User

How about this :

data a;
input info $ 1-50;
cards;
101 pencil 57
102 parker pen 24
103 hp studion shuffle n 10
104 samsung galexy ace 29
;
run;
data b;
 set a;
 dep_id =scan(info,1,' ');
 dept_name=substr(info,findc(info,' ')+1,findc(trim(info),' ','b') - length(dep_id)-1 );
 dep_qty=substr(info,findc(trim(info),' ','b')+1);
run;

OR this one :

data a;
input info $ 1-50;
cards;
101 pencil 57
102 parker pen 24
103 hp studion shuffle n 10
104 samsung galexy ace 29
;
run;
data b;
 set a;
 dep_id =scan(compress(info,' ','kd'),1,' ');
 dept_name=compress(info,' ','ka');
 dep_qty=scan(compress(info,' ','kd'),-1,' ');
run;

Xia Keshan

Message was edited by: xia keshan

View solution in original post

4 REPLIES 4
Kurt_Bremser
Super User

You might want to introduce a dedicated delimiter into the input data, like the colon. Then you can use the dlm= option in the infile statement and let the input statement do the separation for you.

data want;

infile cards dlm=':'

format

  pdt_id 3.

  pdt_name $20.

  pdt_quantity 2.

;

input

  pdt_id

  pdt_name

  pdt_quantity

;

datalines;

101:pencil:57

102:parker pen:24

103:hp studion shuffle n:10

104:samsung galexy ace:29

;

run;

Ksharp
Super User

How about this :

data a;
input info $ 1-50;
cards;
101 pencil 57
102 parker pen 24
103 hp studion shuffle n 10
104 samsung galexy ace 29
;
run;
data b;
 set a;
 dep_id =scan(info,1,' ');
 dept_name=substr(info,findc(info,' ')+1,findc(trim(info),' ','b') - length(dep_id)-1 );
 dep_qty=substr(info,findc(trim(info),' ','b')+1);
run;

OR this one :

data a;
input info $ 1-50;
cards;
101 pencil 57
102 parker pen 24
103 hp studion shuffle n 10
104 samsung galexy ace 29
;
run;
data b;
 set a;
 dep_id =scan(compress(info,' ','kd'),1,' ');
 dept_name=compress(info,' ','ka');
 dep_qty=scan(compress(info,' ','kd'),-1,' ');
run;

Xia Keshan

Message was edited by: xia keshan

stat_sas
Ammonite | Level 13

data a;

input prd_id name & $20. prod_qty;

cards;

101 pencil  57

102 parker pen  24

103 hp studion shuffle n  10

104 samsung galexy ace  29

;

run;

KrishnaChandra
Calcite | Level 5

Thanks Xia Keshan. I got the op Smiley Happy

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 906 views
  • 0 likes
  • 4 in conversation