# RE: st: count (Stata 8)

 From "Nick Cox" To 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
n.j.cox@durham.ac.uk

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/