Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, is already up and running.

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

RE: st: Weights now allowed

From   "Sarah Edgington" <>
To   <>
Subject   RE: st: Weights now allowed
Date   Thu, 13 Sep 2012 11:23:07 -0700

It still doesn't work is not really descriptive enough to help us figure out
what's wrong.  You should explain what you mean by that.  Do you get an
error message?  Is the calculation not giving you the result you expect?
Either way, the point still stands that you do not have to loop through your
variables to do this.  All your loop appears to be trying to do is tell
Stata to calculate your expression separately for each observation, which is
what Stata does anyway.

See -help egen- for an explanation of how rowmean treats missing values.  As
explained there, it will calculate the mean over all the non-missing.  If
you're getting a value of zero (when that isn't the mean of the non-missing
values) when there are missing values, then something is probably wrong with
your code.
-egen avg=rowmean(x1 x2 x3)- should get you exactly what you say you're
looking for.

The loop you're trying to write, on the other hand, will always calculate
the mean wrong any time there are missing values because you would need to
divide by the number of non-missing values rather than always dividing by 7.


-----Original Message-----
[] On Behalf Of Daniel Almar de
Sent: Thursday, September 13, 2012 11:05 AM
Subject: Re: st: Weights now allowed

Hello and thanks for the message.

The reason I loop over the data is because sometimes only 3 variables have
an observation.
When I use rowmean then it treats the outcome as 0 if at that row not all
observations have a value. So to clarify, I want to obtain the average in
this way:

x1 x2 x3     avg(x1 x2 x3)
.   1   2             1.5
2  2   3              7/3
4 . .                   4

I tried it btw now with 'i' but it still doesnt work???

***** calculates average expretage
drop ravgexpretage
gen double ravgexpretage = r1expretage
forvalues i = 1/30659 {
replace ravgexpretage[`i'] = (r1expretage[`i'] + r3expretage[`i'] +
r4expretage[`i'] + r5expretage[`i'] + r6expretage[`i'] + r7expretage[`i'] +
r8expretage[`i'])/7 }

On Thu, Sep 13, 2012 at 1:50 PM, Joerg Luedicke <>
> You would need to type [`i'] instead of [i] since i is a local macro 
> here (see -help macro- and -help forvalues-). However, there is no 
> need to loop over all observations in your data, see -help egen 
> rowmean-.
> J.
> On Thu, Sep 13, 2012 at 12:23 PM, Daniel Almar de Sneijder 
> <> wrote:
>> Hello Stata
>> When I attempt to run:
>> ***** calculates average exp ret age
>> drop ravgexpretage
>> gen double ravgexpretage = r1expretage
>> forvalues i = 1/30659 {
>>   replace ravgexpretage[i] = ( r1expretage[i] + r3expretage[i] + 
>> r4expretage[i] + r5expretage[i] + r6expretage[i] + r7expretage[i] + 
>> r8expretage[i] )
>>   replace ravgexpretage[i] =  ravgexpretage[i] *(1/7) }
>> I receive the message: "weights not allowed"
>> What is the problem and How can I circumvene this?
>> My initial idea was to add all the variables up and then divide it by 
>> 7, which works. However it only adds the observations up if each 
>> variable has a observation So that is why I decided to do it like 
>> this.
>> Thanks,
>> Daniel
>> *
>> *   For searches and help try:
>> *
>> *
>> *
> *
> *   For searches and help try:
> *
> *
> *
*   For searches and help try:

*   For searches and help try:

© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index