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.

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

From |
Jocelyn Michael <michaeljocelyn31@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

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 <njcoxstata@gmail.com> 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 > <alberto.dorantes@finanzastec.net> 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 <michaeljocelyn31@gmail.com>: >>> 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/

**Follow-Ups**:**Re: st: using loops in collapse command***From:*Nick Cox <njcoxstata@gmail.com>

**References**:**st: using loops in collapse command***From:*Jocelyn Michael <michaeljocelyn31@gmail.com>

**Re: st: using loops in collapse command***From:*Alberto Dorantes <alberto.dorantes@finanzastec.net>

**Re: st: using loops in collapse command***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**st: Normality and Granger Causlity in Panel Data** - Next by Date:
**Re: st: using Freeman-Tukey arcsine transformation with metan command** - Previous by thread:
**Re: st: using loops in collapse command** - Next by thread:
**Re: st: using loops in collapse command** - Index(es):