## counting total number of distinct observation

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

## Re: counting total number of distinct observation

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;

4 REPLIES 4

## Re: counting total number of distinct observation

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;

Thanks Shmuel

## Re: counting total number of distinct observation

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

## Re: counting total number of distinct observation

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.

Discussion stats
• 4 replies
• 5091 views
• 2 likes
• 4 in conversation