Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.

# Re: st: egen nth highest or lowest value

 From Nick Cox To "statalist@hsphsun2.harvard.edu" Subject Re: st: egen nth highest or lowest value Date Thu, 11 Apr 2013 09:31:02 +0100

```This is clearly programmable with your own program (e.g. defining an
-egen- function), but here is a more systematic way of approaching it,
just with canned code.

. sysuse auto, clear
(1978 Automobile Data)

. egen rank_lo = rank(mpg) , by(rep78) unique

. egen rank_hi = rank(-mpg) , by(rep78) unique

. egen lo2 = total(mpg / (rank_lo == 2)), by(rep78)

. egen hi2 = total(mpg / (rank_hi == 2)), by(rep78)

. egen min = min(mpg), by(rep78)

. egen max = max(mpg), by(rep78)

. tabdisp rep78, c(min lo2 hi2 max)

----------------------------------------------------------
Repair    |
Record    |
1978      |        min         lo2         hi2         max
----------+-----------------------------------------------
1 |         18          24          18          24
2 |         14          16          24          24
3 |         12          12          28          29
4 |         14          14          28          30
5 |         17          17          35          41
. |         14          19          26          26
----------------------------------------------------------

Note that the results for -rep78 == 1- are correct. There are just two
values, so the second largest is the minimum and the second smallest
is the maximum.

Nick
njcoxstata@gmail.com

On 11 April 2013 08:42, "Bartus Tamás" <tamas.bartus@uni-corvinus.hu> wrote:
> The code for, say, the lowest 5th value of variable x could be
>
> sort x
> gen tempvar = x in 5
> egen newvar = mean(tempvar)
>
> The code for the highest 5th value is
>
> gsort - x
> gen tempvar = x in 5
> egen newvar = mean(tempvar)

On 13/04/11, Caterina.ASTARITA@ec.europa.eu wrote:

>> is that possible to generate a new variable containing the nth lowest or nth highest value of another variable?

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/
```