Bookmark and Share

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]

Re: st: egen anycount problem


From   Nick Cox <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: egen anycount problem
Date   Fri, 17 May 2013 01:52:26 +0100

Your central loop has the form

foreach v of varlist <varlist> {
    egen missDS = ...
    egen c08 = ...
}

I find it difficult to understand how that would work, as second time
around the the -egen- commands should fail because the new variables
named already exist.

However, your approach looks wrong in principle.

In looping over a varlist each time your -egen, anycount()- looks only
at a single variable given each time around as as argument.

The problem is not a looping problem, as that function takes a varlist
as argument, and that's its rationale. Nor need you worry about
missings. You are looking for incidences of 8 and missings are not a
problem, as they will be ignored.

Once you have numeric variables, courtesy of -destring-, a single call

egen c08 = anycount(destrprior_service_turps*), values(8)

should give the answer.

By the way, having string variables is not an issue here. You can loop
over string variables like this

gen C08 = 0

quietly forval j = 1/25 {
       replace C08 = C08 + (prior_service_turps_`j' == "8")
}

For more discussion, see

SJ-9-1  pr0046  . . . . . . . . . . . . . . . . . . .  Speaking Stata: Rowwise
        (help rowsort, rowranks if installed) . . . . . . . . . . .  N. J. Cox
        Q1/09   SJ 9(1):137--157
        shows how to exploit functions, egen functions, and Mata
        for working rowwise; rowsort and rowranks are introduced

A .pdf is available at http://www.stata-journal.com/sjpdf.html?articlenum=pr0046

Nick
[original author of -anycount()- in 1999 under the name of -neqany()-]
[email protected]


On 17 May 2013 01:00, paul gross <[email protected]> wrote:
> Dear statalisters
>
> Working with stata 12 and a large dataset of 2.2 million hospital admissions
> where  patients can have multiple or single admissions, I want to count how
> many GP visits (code 8) occurred in the 30 days prior to admission.I have up
> to 25 prior service indicators (prior_service_turps_1 –
> prior_service_turps_25) that can contain the type 8 ( or 15 other)  types of
> doctor encounter. I first destringed these 25 PSIs.
>
> My stata coding below  is intended to return for each admission the total
> number of code 8 in the 25 positions. I also am checking the total of
> missing values in the 25 positions as more missing codes is one of my
> indicators of poor access to medical services
>
>
> sort clt_unique_id admission_date
>
> destring prior_service_turps_1 -
> prior_service_turps_25,gen(destrprior_service_turps_1 -
> destrprior_service_turps_25)
>
> foreach v of varlist destrprior_service_turps_1 -
> destrprior_service_turps_25 {
>
> egen missDS=rowmiss(destrprior_service_turps_1 -
> destrprior_service_turps_25)
>
> egen  c08=anycount(`v') if `v' !=., values (8)
>
> }
>
> tab c08
>
> list obsno patno missDS c08 destrprior_service_turps_1 -
> destrprior_service_turps_3
>
>
> This coding produces the following values for patient no 18 , who clearly
> should have 3 code 8 recorded in variable c08, but has only 1
>
>
>      | obsno | patno | c08 | destr~_1 | prio~s_2 | destr~_2 | prio~s_3 |
> destr~_3 |
>
>      |    68      |    18   |   1   |        8         |      008     |
> 8        |      008     |        8
>
>
> Two probs.
>
> The c08 total is wrong.
> The list variables do not include the original stringed prior service codes,
> only the destringed versions, yet prio~s_2 and prio~s_3 are listed
>
> Have I misused the egen anycount specification?
>
> Paul Gross
> Sydney

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


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index