Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: use egen functions to get survey weighted means

From   Nick Cox <>
Subject   Re: st: use egen functions to get survey weighted means
Date   Sat, 1 Dec 2012 11:51:39 +0000

Austin has remembered what I had forgotten for the moment. David
Kantor's function cited here subverts -egen-'s lack of support for
weights by allowing them to be supplied as an option. But in general
do not look to -egen- when working with -svy:-.

The original question did not make clear (to me) that Liling wanted
repeated calculation for different groups. In fact the background
given in the second post made much more sense of the first.

This FAQ may indicate some technique.

FAQ     . . Calculating variables containing weighted group summary statistics
        . . . . . . . . . . . . . . . . . . . . .  N. J. Cox and S. P. Jenkins
        1/03    I want to calculate a variable containing weighted
                group summary statistics, but I do not want to
                collapse the data and egen does not support weights.
                How can I do this?

For a single mean left in e(b)

mat b = e(b)
replace <whatever> = b[1,1] if <whatever>

avoids use of -svmat-.

On Fri, Nov 30, 2012 at 8:27 PM, Austin Nichols <> wrote:
> LILING <>:
> ssc inst _gwtmean
> egen m=wtmean(rank), by(x y z) weight(wt)
> On Fri, Nov 30, 2012 at 3:08 PM, HUANG, LILING <> wrote:
>> Nick, Thank you very much for prompt response to my inquiry. But I do need a new variable to get the mean constants that result from a variety of conditions by the statement if x==1 & y==1 & z==1 (e.g., x==1 & y==2 & z==2). I was struggling with this and doing it in a hard way by generating each new variable for each if statement and trying to use replace command to collect all the means from these variables into one final variable. But when I tried to get weighted means and found that egen does not support svy:means.  Is there an easier way to get this done?  I looked up the past thread and learned to use the matrix means = e(b) and svmat means commands to get the weighted means. But I cannot quite figure out how to achieve what I want to get out of my data in an easy way.

*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index