Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
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/