Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


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

Re: st: RE: Save -table- command results


From   "Pablo Bonilla" <pablo.bonilla1234@gmail.com>
To   "Stata List" <statalist@hsphsun2.harvard.edu>
Subject   Re: st: RE: Save -table- command results
Date   Mon, 12 Mar 2012 16:05:09 +0000

Nick, this is amazing. Thank you so much.

Best.

Pablo.
Sent via BlackBerry from T-Mobile

-----Original Message-----
From: Nick Cox <n.j.cox@durham.ac.uk>
Sender: owner-statalist@hsphsun2.harvard.edu
Date: Mon, 12 Mar 2012 15:53:47 
To: 'statalist@hsphsun2.harvard.edu'<statalist@hsphsun2.harvard.edu>
Reply-To: statalist@hsphsun2.harvard.eduSubject: RE: st: RE: Save -table- command results

At this distance -statsmat- doesn't seem a very interesting command to change. Kit may be more enthusiastic. 

It's perhaps more instructive to show how to write your own program. I didn't add in weights, but that's not difficult, and I have a meeting somewhere else in a few minutes' time. 

program mysums 
	version 8.2 
	syntax varlist(numeric) [if] [in] , by(varname) [matname(name)] 
	
	quietly { 
		marksample touse 
		markout `touse' `by', strok 
		count if `touse' 
		if r(N) == 0 error 2000 
	
		local J : word count `varlist' 
		tempvar group 
		egen `group' = group(`by') if `touse' 
		su `group', meanonly 
		local I = r(max) 
	
		if "`matname'" == "" local matname "mysums" 
		matrix `matname' = J(`I', `J', 1) 
		tokenize `varlist' 
	
		forval i = 1/`I' { 
			forval j = 1/`J' { 
				su ``j'' if `group' == `i', meanonly 
				matrix `matname'[`i', `j'] = r(sum) 
			}
		} 
	
		levelsof `by' if `touse' 
		capture matrix rownames `matname' = `r(levels)' 
		matrix colnames `matname' = `varlist' 
	} 
end

Nick 
n.j.cox@durham.ac.uk 


-----Original Message-----
From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Pablo Bonilla
Sent: 12 March 2012 15:33
To: Stata List
Subject: Re: st: RE: Save -table- command results

Dear Nick,

You'r right, I am sorry for not explain the provenance os -statsmat-. 

Thank you for the suggestion, but still it is faster and more efficient to use the -statsmat- command  because the preserver and the collapse commands are very slow in huge data bases like the one I am using.

That would be great if the -statsmat- command can present results with the by() option for several variables.

Best,

Pablo.
Sent via BlackBerry from T-Mobile

-----Original Message-----
From: Nick Cox <n.j.cox@durham.ac.uk>
Sender: owner-statalist@hsphsun2.harvard.edu
Date: Mon, 12 Mar 2012 14:58:02 
To: 'statalist@hsphsun2.harvard.edu'<statalist@hsphsun2.harvard.edu>
Reply-To: statalist@hsphsun2.harvard.eduSubject: st: RE: Save -table- command results

-statsmat- is from SSC (Christopher F. Baum and friend). Please remember to explain the provenance of user-written commands. 

You don't have to use -statsmat- at all to get a matrix. There are many ways of doing it. 

Here is one: 

preserve
collapse (sum) var1 var2 var3 var4 var5 [w=factor], by(decil) 
mkmat var*, matrix(mysums) row(decil) 
restore 

Nick 
n.j.cox@durham.ac.uk 

Pablo Bonilla

I would like to know if there is a way to save the results from the
-table- command in matrices. I am using the -statsmat- command but It
is very inefficient if I need to use it with the by() option.

For instance, this is what I want to save:
table decil [w = factor], c(sum var1  sum var2 sum var3  sum var4 sum
var5)  f(%19.2f) row

But I have to do it in this way in order to get a matrix:
cap mat drop mat1
foreach var in var1 var2 var3 var4 var5 {
	statsmat `var' [w = factor], by(decile) stat(sum) format(%16.0f)
matrix(`income')
	mat mat1 = nullmat(INCOME),`income'
}


*
*   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/

*
*   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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index