Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

RE: st: count (Stata 8)


From   "Nick Cox" <[email protected]>
To   <[email protected]>
Subject   RE: st: count (Stata 8)
Date   Tue, 10 May 2005 20:02:27 +0100

I'm on record as a big fan of -foreach- but this problem 
doesn't seem to need a loop at all. 

Nevertheless, you want scalars, although I am not clear why. 

You can have it both ways by having variables and scalars too. 
(The variables will come in useful for graphs and tables.) 

egen cases = sum(dflag), by(year) 
egen n = sum(1), by(year) 
gen prevalence = cases / n 
tabdisp year, c(prevalence) 

levelsof year, local(Y) 
foreach y of local Y { 
	su prev if year == `y', meanonly 
	scalar prev`y' = r(min) 
} 

Nick 
[email protected] 

Heather Gold
 
> Thanks for the replies thus far.
> I'd prefer a scalar so I don't have to generate the extra 
> variables with a 
> value attached to each subject.
> 
> Based on all the comments you have generously offered, I'm 
> closer to a 
> solution:
> 
> forvalues i=1995/1998 {
>          count if dxflag==1 & year==`i'
>          scalar cases`i' = r(N)
>          count if year==`i'
>          scalar total`i' = r(N)
>          scalar prev`i' = cases`i'/total`i'
> }
> The problem is this doesn't give me different denominators 
> (ie, total for 
> each year)...thoughts?
> Heather
> 
> >-------Original Message-------
> >
> >>Dear Listers -
> >>
> >>I know this must be simple, but something eludes me.
> >>I have a data set of subjects (cases and non-cases) by year 
> and am trying 
> >>to calculate a prevalence per year, ie, [cases/(cases+noncases)].
> >>ie, data look like this:
> >>id      year    dxflag
> >>1       1995    1
> >>1       1996    0
> >>1       1997    0
> >>2       1995    0
> >>2       1996    1
> >>...
> >>
> >>I found that I can write
> >>by year: count if dxflag==1
> >>or
> >>by year: count
> >>
> >>and these return number of cases in the first line, and 
> count of total 
> >>population in the second line, just as I want.
> >>But what I need are these values as scalars, so I can 
> create a prevalence 
> >>per year. In the Stata 8 help/manual it says that -count- saves the 
> >>scalar of number of observations in r(N), but I can't seem 
> to get this 
> >>number to appear. Do I actually have to write a program to 
> calculate 
> >>this? And how does the "by year" part fit in...?

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



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