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

Hi everyone,

I have a data set that contain a variable similar to this example,

 

number

56

56

56

58

58

60

61

61

61

61

61

...

 

I would like to know the total count of distinct number. In this example is 4 (56, 58, 60, and 61). 

How can i do it in SAS? I think i can do

proc sort data= mydata out=dataout noduplications;

... 

then use proc freq or proc means

but is that a clever way?

 

thanks 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Shmuel
Garnet | Level 18

There are more than one way to get the amount of distinct values of a variable:

 

1) Using proc sort with nodupkey - just check number of output observations in log or check output dataset.

 

2) Use proc sql - select distinct variable and end with:

  

quit;
%put &sqlobs;

  then check the log;

 

3) Assuming your data is sorted by the variable then do:

  

data _null_;
   set have end=eof;
        retain distinct_count 0;
    by var;
        if eof then put   distinct_count =;
        if first.var then  distinct_count  +1;
run;

  and check the log;

View solution in original post

4 REPLIES 4
Shmuel
Garnet | Level 18

There are more than one way to get the amount of distinct values of a variable:

 

1) Using proc sort with nodupkey - just check number of output observations in log or check output dataset.

 

2) Use proc sql - select distinct variable and end with:

  

quit;
%put &sqlobs;

  then check the log;

 

3) Assuming your data is sorted by the variable then do:

  

data _null_;
   set have end=eof;
        retain distinct_count 0;
    by var;
        if eof then put   distinct_count =;
        if first.var then  distinct_count  +1;
run;

  and check the log;

babymonster
Calcite | Level 5
Thanks Shmuel
RW9
Diamond | Level 26 RW9
Diamond | Level 26

You want to do a frequency count, therefore use proc freq(uency) - this is logical and why they called the procedure that name

ballardw
Super User

And an example using the Proc Freq nlevels option:

ods select nlevels;
proc freq data=sashelp.class nlevels;
   tables sex;
run;

the ODS Select nlevels; instructs SAS to only show the levels information which would be the number of unique values and missing values if any.

 

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

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
  • 5927 views
  • 2 likes
  • 4 in conversation