Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <n.j.cox@durham.ac.uk> |
To | "'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu> |
Subject | RE: st: dot product across many variables |
Date | Tue, 29 Nov 2011 18:16:17 +0000 |
Talking of which, . edit . set obs 10 obs was 0, now 10 . forval i = 1/3 { 2. gen first`i' = runiform() > `i' * 0.2 3. gen second`i' = runiform() < `i' * 0.2 4. } . l +--------------------------------------------------------+ | first1 second1 first2 second2 first3 second3 | |--------------------------------------------------------| 1. | 0 0 0 0 1 1 | 2. | 1 1 0 0 0 0 | 3. | 1 0 1 1 0 1 | 4. | 1 0 1 1 0 1 | 5. | 1 0 1 0 1 1 | |--------------------------------------------------------| 6. | 0 0 1 1 0 1 | 7. | 1 0 1 0 0 1 | 8. | 0 0 1 1 1 1 | 9. | 1 0 0 0 0 1 | 10. | 1 0 1 1 1 0 | +--------------------------------------------------------+ . mata ------------------------------------------------- mata (type end to exit) -------------------------------------------------------------------- : x = st_data(., "first1 first2 first3") : y = st_data(., "second1 second2 second3") : x :* y 1 2 3 +-------------+ 1 | 0 0 1 | 2 | 1 0 0 | 3 | 0 1 0 | 4 | 0 1 0 | 5 | 0 0 1 | 6 | 0 1 0 | 7 | 0 0 0 | 8 | 0 1 1 | 9 | 0 0 0 | 10 | 0 1 0 | +-------------+ : rowsum(x :* y) 1 +-----+ 1 | 1 | 2 | 1 | 3 | 1 | 4 | 1 | 5 | 1 | 6 | 1 | 7 | 0 | 8 | 2 | 9 | 0 | 10 | 1 | +-----+ Nick n.j.cox@durham.ac.uk -----Original Message----- From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Paul Burkander Sent: 29 November 2011 18:12 To: statalist@hsphsun2.harvard.edu Subject: Re: st: dot product across many variables ah, that's great. Much better than having to learn mata in day. Thanks! On Tue, Nov 29, 2011 at 1:03 PM, Nick Cox <njcoxstata@gmail.com> wrote: > Consider a loop > > gen newdummy = 0 > > forval j = 2000/2010 { > replace newdummy = newdummy + firstdummy`j' * seconddummy`j' > } > > On Tue, Nov 29, 2011 at 5:11 PM, Paul Burkander <paul@burkander.com> wrote: > >> I have a data set that has two binary variables in each of several >> years. I'd like to create a new variable that is the sum across all >> years of the product of the two within year. >> >> For example, >> firstdummy2000=1 >> seconddummy2000=0 >> firstdummy2001=1 >> seconddummy2001=1 >> >> newdummy=(firstdummy2000*seconddummy2000+firstdummy2001*seconddummy2001)=1 >> >> There are so many years that it seems cumbersome to do it as above, >> moreover the years might change over time and I'd like to be flexible. >> >> I thought perhaps a matrix command would work, doing a dot product? >> > > * > * 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/ * * 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/