Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

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

From |
Amadou DIALLO <[email protected]> |

To |
[email protected] |

Subject |
Re: st: Sum of products by sub-groups in mata. |

Date |
Mon, 20 Jan 2014 21:04:19 +0100 |

Dear Nick, Sorry I was stuck in a meeting. Many thanks for your answer. However, I find it difficult to do very basic tasks in mata (as doing a simple egen sum = sum(x) in stata). Following your example for instance, and doing minor changes, to populate another matrix with the number of occurrences, I do the following: mata: y = ("frog", "frog", "toad", "newt") mata: allz = . mata: x = (1, 4, 2,3) mata: z = (., ., .,.) mata: sum= sum(x :* (y :== "frog")) mata: z=sum:*(y :== "frog") mata: z mata: z1 = select(z, z[.,.]:>0) mata: z1 mata: allz = z1 mata: allz mata: sum= sum(x :* (y :== "toad")) mata: z=sum:*(y :== "toad") mata: z mata: z2 = select(z, z[.,.]:>0) mata: z2 mata: allz = allz , z2 mata: allz mata: sum= sum(x :* (y :== "newt")) mata: z=sum:*(y :== "newt") mata: z mata: z3 = select(z, z[.,.]:>0) mata: z3 mata: allz = allz , z3 mata: allz mata: sum= sum(x :* (y :== "blabla")) mata: z=sum:*(y :== "blabla") mata: z mata: z4 = select(z, z[.,.]:>0) mata: z4 mata: allz = allz , z4 mata: allz This is not very elegant, I believe. I think mata definitely needs the same sort of "if" qualifiers, as in Stata. Many thanks for your usual support. 2014/1/20, Nick Cox <[email protected]>: > Mata has an -if- but nothing quite like Stata's -if- qualifier. But > neither is in general a good solution to selective summation. > > : y = ("frog", "toad", "newt") > > : x = (1, 2,3) > > : sum(x :* (y :== "frog")) > 1 > > See also -select()- and -panelsetup()-. > > Nick > [email protected] > > > On 20 January 2014 16:47, Amadou DIALLO <[email protected]> wrote: >> Hi, >> I want to compute in mata total by subgroup (the equivalent of stata's >> bys group: egen total = total(expense) ).How to do that? >> >> Also, is it possible to use "if" condition with mata? SOmething like: >> >> mata: >> sum = 0 >> for (i=1; i<= maxcountry; i++) { >> sum = sum + sum(expense) if country == i >> } >> sum >> end >> >> -- >> Amadou B. DIALLO, PhD. >> Senior Economist, AfDB. >> [email protected] >> +21671101789 >> * >> * 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/ > -- Amadou B. DIALLO, PhD. Senior Economist, AfDB. [email protected] +21671101789 * * 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/

**Follow-Ups**:**Re: st: Sum of products by sub-groups in mata.***From:*Nick Cox <[email protected]>

**References**:**st: Sum of products by sub-groups in mata.***From:*Amadou DIALLO <[email protected]>

**Re: st: Sum of products by sub-groups in mata.***From:*Nick Cox <[email protected]>

- Prev by Date:
**st: margins** - Next by Date:
**st: adoupdate installed a version for a Stata copy, newer than I have** - Previous by thread:
**Re: st: Sum of products by sub-groups in mata.** - Next by thread:
**Re: st: Sum of products by sub-groups in mata.** - Index(es):