BookmarkSubscribeRSS Feed
pawandh
Fluorite | Level 6

data t;
input sno category$ 20.;
cards;
1 dairy floor eggs
2 floor milk
3 eggs bread
4 bread butter butter
;run;

 

i have this data set and i want distinct category (dairy,floor,eggs,milk,bread,butter).

I can do like this


data t1;
set t;
do i=1 to 3;
x=scan(category,i);
output;
end;
run;
proc print;run;

but here i dnt knw how many times i have to run the loop like 3 or 4 or 5 times.Any optimum way?

 

3 REPLIES 3
Reeza
Super User
Countw() will count number of words in a variable. Use that to create a variable that holds the number of iterations and use it in your do loop.
stat_sas
Ammonite | Level 13

data t1;

set t;
do i=1 to countw(category);
x=scan(category,i);
output;
end;
run;

PGStats
Opal | Level 21

Read the categories one by one until the end of each line:

 

data t;
infile datalines truncover;
input sno category :$20. @;
do until(missing(category));
    output;
    input category :$20. @;
    end;
datalines;
1 dairy floor eggs
2 floor milk
3 eggs bread
4 bread butter butter
;
PG
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
  • 3 replies
  • 1095 views
  • 1 like
  • 4 in conversation