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 on April 23, 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: tabstat upside down


From   Nick Cox <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: RE: tabstat upside down
Date   Tue, 26 Apr 2011 23:40:35 +0100

Good suggestions. Here is another way. The first part just fabricates data.

clear
set obs 100
gen acuteall = runiform()
forval j = 1/30 {
	local split = runiform()
	gen e`j' = runiform() < `split'
}

matrix averages = J(30,2,.)
forval j = 1/2 {
	local J = `j' - 1
	forval i = 1/30 {
		su acuteall if e`i' == `J', meanonly
		matrix averages[`i', `j'] = r(mean)
	}
}
mat colname averages = 0 1
mat li averages, format(%4.3f)


On Tue, Apr 26, 2011 at 10:07 PM, Eric Booth <ebooth@ppri.tamu.edu> wrote:

> I'm not sure I completely follow, but for a dataset that looks something like:
> *********************begin example
> clear
> set obs 1000
> g acuteall = rbinomial(1, .4)
> forval n = 1/30 {
>        g e`n' = rbinomial(1, .4)
>        }
> sa "test.dta", replace
> ****
> /*
> you say you want a" summary comparing the mean acuteall for each category of each of e1 thru e30..."
> yet, e1-e30 are not categories.  I interpret this to mean you want the mean of acuteall when e1 ==1 and
> then e2==1 and so on, like:
> */
> su acuteall if e1==1
> di "`r(mean)'"  //notice this equals the first obs in the collapsed data below
>
> **but for all vars...so you could collapse like:
> g id = _n
> reshape long e, i(id) j(ee )
> keep if e==1
> collapse (mean) acuteall,  by(ee)
> **to get the mean of acute all where e* == 1
> **now, you can list, outsheet, texsave etc this dataset as a table
>
>
> **OR**
> ****** maybe you want something more like tabout(from SSC) has to offer(?):
> u test.dta, clear
> tabout e* using "test.txt", sum oneway ///
>        replace c(mean acuteall)
> type "test.txt"
>
> tabout e* acuteall using "test2.txt", ///
>        replace c(col) f(1p)
> type "test2.txt"
> ********************end example

Richard Goldstein [richgold@ix.netcom.com]

> I have 30 binary variables (e1-e30) and I have another yes/no (0/1)
> variable called acuteall; I want to supply my client with an easy to
> follow summary comparing the mean acuteall for each category of each of
> e1 thru e30; -tabstat-, however, supplies me with the mean of each of e1
> thru e30 for each category of acuteall (command: -tabstat e1-e30,
> by(acuteall)-)
>
> in other words, in the following table, I want to see .122 v. .184 and
> what I get instead is .04 v. .0634; suggestions more than welcome (I
> could not see how to do this with -collapse- either, but maybe someone
> else can)
>
> . ta e1 acuteall, ro co nofreq
>
> +-------------------+
> | Key               |
> |-------------------|
> |  row percentage   |
> | column percentage |
> +-------------------+
>
>           |  discharge to acute
> congestive | (no includes everyone
>     heart |        else)?
>   failure |         N          Y |     Total
> -----------+----------------------+----------
>         N |     87.80      12.20 |    100.00
>           |     96.00      93.66 |     95.71
> -----------+----------------------+----------
>         Y |     81.60      18.40 |    100.00
>           |      4.00       6.34 |      4.29
> -----------+----------------------+----------
>     Total |     87.53      12.47 |    100.00
>           |    100.00     100.00 |    100.00
>

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