Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: Re: Counting Unique Values by Year

From   "Scott Merryman" <>
To   <>
Subject   st: Re: Counting Unique Values by Year
Date   Sun, 1 Jun 2003 20:07:23 -0500

----- Original Message ----- 
From: "Jennifer S. Earl" <>
To: <>
Sent: Sunday, June 01, 2003 7:34 PM
Subject: st: Counting Unique Values by Year

> I have a data set with cases spread out over a number of years. I have a
> numeric variable called CLMS. I want to create a new variable UNIQCLMS
> equals the number of unique values that CLMS took on each year.
> I have thought of some very long-winded ways to do this, such as creating
> counter using a lag-comparison and then harvesting the last value of this
> counter, but it seems like it should be easier. In particular, Stata
> already calculates the number of unique values in lots of operations,
> including INSPECT (e.g., "by year: inspect clms" will produce the number
> unique values for CLMS, unless that number exceeds 99, but it won't write
> that value out to another variable as far as I know), and the number of
> unique values should also equal the number of rows produced using "by
> tab clms".
> So, I am hoping someone might be able to think of a quick and/or elegant
> way to get Stata to produce a new variable, UNIQCLMS that contains the
> number of unique values that CLMS takes on in each year. If I could dream
> up a new egen command, the format would be something like:
> by year: egen uniqclm=unique(CLMS)
> Any thoughts would be appreciated.
> Cheers,
> Jennifer

Thanks to Nick Cox there is such a command:  -nvals- , part of the egenmore
package will return the number distinct values as a variable.  Something

egen uniqclm = nvals(CLMS) , by(year)

should work.

You also might find the discussion in the FAQ "How do I compute the number
of distinct observations?"
( helpful.

Hope this helps,

*   For searches and help try:

© Copyright 1996–2015 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index