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: counting variables within a row
From
Steve Samuels <[email protected]>
To
[email protected]
Subject
Re: st: counting variables within a row
Date
Tue, 8 Jun 2010 21:36:23 -0400
The only substantive correction I would make to Sarah's code is start
the loop with:
local vn "one two three"
foreach num of local vn{
But the variable names are terrible to type and read! Why not change
to numeric suffixes, save yourself a lot of typing, and get more
readable code and output in the bargain?
Steve
On Tue, Jun 8, 2010 at 8:20 PM, Sarah Elizabeth Edgington
<[email protected]> wrote:
> Casey,
> You could use a foreach loop to assess your criteria for each variable and
> then add 1 to a count variable if it's true. To save myself some typing I'm
> going to assume a simpler case where you only have five variables but you
> can extend it beyond that to the full eighteen (note that if you were using
> variable names with a numeric suffix like met_a1 you could use a forvalues
> loop).
> To get your first count it might look something like this:
>
> gen lightcount_d1=0
> foreach num in one two three four five {
> replace lightcount_d1=lightcount_d1+1 if met_a`num'>0 & met_a`num'<3
> }
>
> There may be other ways to do this but this is the first that occurs to me.
>
> -Sarah
>
> At 04:15 PM 6/8/2010, you wrote:
>>
>> Hi folks,
>>
>> I have a dataset with 18 variables called met_aone-met_aeighteen.
>> Within each observation, I'm trying to count the number of these
>> variables with values which satisfy three criteria. I thought I could
>> handle this with -egen- and the lines of code I originally wrote are:
>>
>> egen lightcount_d1= rownonmiss ( met_aone-met_aeighteen) if (
>> met_aone-met_aeighteen)> 0 & ( met_aone-met_aeighteen)< 3
>> egen modcount_d1= rownonmiss (met_aone-met_aeighteen) if
>> (met_aone-met_aeighteen)>= 3.0000 & (met_aone-met_aeighteen)< 6
>> egen hardcount_d1= rownonmiss (met_aone-met_aeighteen) if
>> (met_aone-met_aeighteen)>= 6.0000 & (met_aone-met_aeighteen)< .
>>
>> The problem as I quickly realized is that it is only counting
>> variables when every single value in the row satisfies the if
>> requirement. What I can't figure out is how to assess each variable
>> individually for meeting the criteria, but ultimately producing a new
>> variable with the total within the observation which meets my
>> criteria.
>>
>> Any thoughts on how to handle this?
>>
>> Thanks in advance.
>>
>> *
>> * 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/
>
--
Steven Samuels
[email protected]
18 Cantine's Island
Saugerties NY 12477
USA
Voice: 845-246-0774
Fax: 206-202-4783
*
* 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/