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

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 1044 views
  • 1 like
  • 4 in conversation