Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Cory Smith <corybsmith@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: Need help with working across variables |
Date | Sun, 10 Feb 2013 00:56:39 -0500 |
All non-missing observations will be the same iff the minimum value equals the maximum value. You can fill in the rest given the previous code, I think. Cory On Sun, Feb 10, 2013 at 12:53 AM, Michael Stewart <michaelstewartresearch@gmail.com> wrote: > Dear Cory, > This works, > Thanks a lot > on the same lines have another question > > id var > 1 2 > 1 2 > 1 3 > 1 2 > 2 1 > 2 1 > 2 1 > 2 . > 2 1 > 3 1 > 3 2 > 3 4 > > How do I check of all(nonmissing) observations for a particular id are the same > thanks > Mike > > On Sun, Feb 10, 2013 at 12:34 AM, Cory Smith <corybsmith@gmail.com> wrote: >> Too complicated in my opinion. >> >> gen x = 0 >> >> egen Vmin = rowmin(var1 - var4) >> egen Vmax = rowmax(var1 - var4) >> >> replace x = 1 if Vmin == 1 & Vmax == 1 & Vmin != . >> replace x = 2 if Vmin == 2 & Vmax == 2 & Vmin != . >> >> Actually, some of the terms in the above are unnecessary but I kept >> them in for clarity. >> >> On Sun, Feb 10, 2013 at 12:27 AM, Alison Connor <alison.connor@gmail.com> wrote: >>> Hi Michael, >>> >>> There might be a more efficient way to do it, but if you have egenmore >>> you can do: >>> >>> egen x=rall(var1 var2 var3 var4), c(@==1) >>> >>> This will be 1 if all non-missing variables are 1, and 0 otherwise. If >>> you only have two values for your variables, then you can run this >>> command again, and then merge the two into a third variable: >>> >>> egen x1=rall(var1 var2 var3 var4), c(@==1) >>> egen x2=rall(var1 var2 var3 var4), c(@==2) >>> >>> gen x=0 >>> replace x=1 if x1==1 >>> replace x=2 if x2==1 >>> >>> If you are going to do this for multiple values, then you can create a loop: >>> >>> gen x=0 >>> forvalues i=1/2 { >>> egen x`i'=rall(var1 var2 var3 var4), c(@==`i') >>> replace x=`i' if x`i'==1 >>> drop x`i' >>> } >>> >>> ~Alison >>> >>> >>> On Sun, Feb 10, 2013 at 10:41 AM, Michael Stewart >>> <michaelstewartresearch@gmail.com> wrote: >>>> >>>> HI , >>>> Here is my data format and my question: >>>> id var1 var2 var3 var4 >>>> 1 1 1 1 . >>>> 2 1 1 1 1 >>>> 3 1 2 1 . >>>> 4 2 2 2 2 >>>> 5 1 1 1 1 >>>> 6 1 2 . . >>>> 7 2 1 2 . >>>> >>>> I am trying to generate a new variable x =1 if all non missings values >>>> for the variables(per observation) are equal to 1 and x =2 if all non >>>> missings values for the variables(per observation) are equal to 2. I >>>> tried to do foreach loop like >>>> >>>> gen x=0 >>>> foreach x in var1 var2 var3 var4{ >>>> replace x=1 if `x'=1 >>>> } >>>> but it doesnt seem to do the trick >>>> >>>> I am specifically interested in to change x =1 if all nonmissign >>>> values for an observation are equal to one >>>> For example: I would like to replace x=1 for id=1 but not for id 3 >>>> Similarly, I would like to replace x=2 if all nom missing values for >>>> an observation are equal to two. >>>> >>>> -- >>>> Thank you , >>>> Yours Sincerely, >>>> Mike. >>>> * >>>> * For searches and help try: >>>> * http://www.stata.com/help.cgi?search >>>> * http://www.stata.com/support/faqs/resources/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/faqs/resources/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/faqs/resources/statalist-faq/ >> * http://www.ats.ucla.edu/stat/stata/ > > > > -- > Thank you , > Yours Sincerely, > Mike. > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/faqs/resources/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/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/