Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: using loops in collapse command
From
Jocelyn Michael <[email protected]>
To
[email protected]
Subject
Re: st: using loops in collapse command
Date
Mon, 2 Apr 2012 13:29:09 -0400
Thank you to all. I have tried the suggested approaches and I am
almost there. I guess the part I omitted in my question is that I have
multiple years. So the solutions you have suggested resolve most of
the issue - but I am still experiencing some problems.
here is what I have done so far:
by id (date), sort:drop if _n==sum(mi(value1))
sort id date
gen ym = yofd(date)
format ym %ty
drop if value1==.
foreach %ty bysort id gen double product = exp(sum(ln(value1)))
It works properly if I don't have the second restriction of trying to
sort into years i.e. the (foreach %ty) part.
Thanks for your assistance.
J.
On Mon, Apr 2, 2012 at 11:10 AM, Nick Cox <[email protected]> wrote:
> The geometric mean is only usefully defined for strictly positive
> values. If that is the case, then the solution at
>
> http://www.stata.com/statalist/archive/2012-03/msg01142.html
>
> is equivalent to this, requires no installed extras and is more direct.
>
> Nick
>
> On Mon, Apr 2, 2012 at 4:03 PM, Alberto Dorantes
> <[email protected]> wrote:
>> Hi Michael.
>> You can install the egenmore function first using findit egenmore.
>>
>> Then, you can type:
>>
>> egen gm=gmean(value1), by(id)
>> egen nn=count(value1), by(id)
>> gen prod=gm^(nn)
>>
>> I hope this help...
>>
>> Alberto.
>>
>> 2012/4/2 Jocelyn Michael <[email protected]>:
>>> I am a new stata user and have been trying to write a loop to accomplish a task.
>>>
>>> My data looks like this:
>>>
>>>
>>> id Year Value 1
>>> A Jan1991 0.92
>>> A Feb1991 0.93
>>> A Mar1991 0.24
>>> A APr1991 0.83
>>> ..
>>> ..
>>> B Jan1991 0.67
>>> B Feb1991 0.45
>>> ..
>>>
>>> What I am trying to achieve is to write a loop that multiplies value1
>>> for each id and returns one number for each year - sort of like a
>>> collapse command but instead of the sum, I want the product. That is
>>> for A for 1991, (0.92*0.93*0.24*0.83).
>>>
>
> *
> * For searches and help try:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/statalist/faq
> * http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/