[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

From |
John-Paul Ferguson <[email protected]> |

To |
[email protected] |

Subject |
RE: st: Merging matrices |

Date |
Thu, 9 Jun 2005 10:47:30 -0400 |

Both Nick and Scott's suggestions were quite useful. Scott's is better for this case, where I would prefer to keep the data in memory. While working it into my program, I also realized, belatedly, that I need not hard-code the v(.) values for the -tabcount- command (something that wasn't so obvious late last night!). In other words: (snip) replace var2=var4 if var2==3 su var1 local max1=r(max) su var2 local max2=r(max) /// Could also be done with -tabstat- local max=max(`max1',`max2') tabcount var1, v(1/`max') zero mat(m1) tabcount var2, v(1/`max') zero mat(m2) (etc.) Thanks again to Scott and Nick for their suggestions. --John-Paul Ferguson Quoting Scott Merryman <[email protected]>: > Another way is to use Nick Cox's -tabcount- which will tabulate missing > values. > > ********** > clear > set obs 100 > set seed 1234567 > forv i=1/2 { > g var`i'=1 > replace var`i'=2 if uniform()>.4 > replace var`i'=3 if uniform()>.3 > } > replace var2=4 if var2==3 > > tabcount var1, v(1/4) zero mat(m1) > tabcount var2, v(1/4) zero mat(m2) > levels var1, local(l1) > levels var2, local(l2) > local l3 : list l1 | l2 > local rows : subinstr local l3 " " ",", all > matrix rows = (`rows')' > matrix freq = rows, m1, m2 > matrix list freq > > Hope this helps, > Scott > > > > -----Original Message----- > > From: [email protected] [mailto:owner- > > [email protected]] On Behalf Of Nick Winter > > Sent: Wednesday, June 08, 2005 7:03 PM > > To: [email protected] > > Subject: Re: st: Merging matrices > > > > I'm sure there is something better, but what occurs to me is to use - > > svmat- > > and -merge-. Something like this, after the code you've generated: > > > > drop _all > > svmat v1 > > rename v11 value > > sort value > > save temp1 > > drop _all > > svmat v2 > > rename v21 value > > sort value > > merge value using temp1 > > > > foreach v in v12 v22 { > > replace `v' = 0 if mi(`v') > > } > > sort value > > > > > > This would need to be generalized a bit, and would need to rename/label > > the > > resulting variables better, etc., but might be a viable approach. > > > > --Nick Winter > > > > At 07:18 PM 6/8/2005, you wrote: > > >Hello all, > > > > > >I am trying to write a program that (in part) displays a special table > > showing > > >the frequency counts of two variables. I am currently using -tabulate- on > > the > > >two variables and extracting the necessary row and frequency names. It's > > then > > >easy to show TWO tables with the frequencies, via simple matrix > > subscripting. > > >The difficulty that showing them in one table imposes is that, unless the > > list > > >of row names is the same in the two variables, displaying the stored > > >frequencies via simple matrix subscripting will line up the rows > > incorrectly. > > > > > >To make this clearer, consider the following code: > > > > > >********** > > >clear > > >set obs 100 > > >set seed 1234567 > > >forv i=1/2 { > > > g var`i'=1 > > > replace var`i'=2 if uniform()>.4 > > > replace var`i'=3 if uniform()>.3 > > >} > > >replace var2=4 if var2==3 > > >tab var1, matcell(freqs1) matrow(nums1) > > >mat v1=(nums1,freqs1) > > >tab var2, matcell(freqs2) matrow(nums2) > > >mat v2=(nums2,freqs2) > > >********** > > > > > >The two resulting matrices will look as follows: > > > > > >. mat list v1 > > > > > >v1[3,2] > > > c1 c1 > > >r1 1 15 > > >r2 2 28 > > >r3 3 57 > > > > > >. mat list v2 > > > > > >v2[3,2] > > > c1 c1 > > >r1 1 21 > > >r2 2 25 > > >r3 4 54 > > > > > >What I would like to create is a hypothetical v3, which looks like this: > > > > > >v3[4,3] > > > c1 c1 c1 > > >r1 1 15 21 > > >r2 2 28 25 > > >r3 3 57 0 > > >r4 4 0 54 > > > > > >I've been poring over the -matrix- commands, and I just can't figure out > > a way > > >to create this matrix. I've also looked at -tabcount- and -groups-, > > without > > >success (I know that Nick Cox wrote on these recently, but our library's > > copy > > >of the SJ is at the bindery, worse luck!). > > > > > >Does anyone have any ideas for producing v3, as described above? > > > > > >Thanks, > > >John-Paul Ferguson > > >* > > >* For searches and help try: > > >* http://www.stata.com/support/faqs/res/findit.html > > >* http://www.stata.com/support/statalist/faq > > >* http://www.ats.ucla.edu/stat/stata/ > > > > -------------------------------------------------------- > > Nicholas Winter 607.255.8819 t > > Assistant Professor 607.255.4530 f > > Department of Government [email protected] e > > 308 White Hall falcon.arts.cornell.edu/nw53 w > > Cornell University > > Ithaca, NY 14853-4601 > > > > * > > * For searches and help try: > > * http://www.stata.com/support/faqs/res/findit.html > > * http://www.stata.com/support/statalist/faq > > * http://www.ats.ucla.edu/stat/stata/ > > > * > * For searches and help try: > * http://www.stata.com/support/faqs/res/findit.html > * http://www.stata.com/support/statalist/faq > * http://www.ats.ucla.edu/stat/stata/ > * * For searches and help try: * http://www.stata.com/support/faqs/res/findit.html * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

**References**:**RE: st: Merging matrices***From:*"Scott Merryman" <[email protected]>

- Prev by Date:
**Re: st: Keeping observations** - Next by Date:
**st: about -mreldif( )-** - Previous by thread:
**Re: st: Keeping observations** - Next by thread:
**st: New package: Waiting Time Distribution** - Index(es):

© Copyright 1996–2024 StataCorp LLC | Terms of use | Privacy | Contact us | What's new | Site index |