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: counting variables within a row


From   Steve Samuels <sjsamuels@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: counting variables within a row
Date   Tue, 8 Jun 2010 21:42:05 -0400

Sorry, to match Sarah's example that should have been:

local vn "one two three four five"

Steve


On Tue, Jun 8, 2010 at 9:36 PM, Steve Samuels <sjsamuels@gmail.com> wrote:
> 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
> <sedging@ucla.edu> 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
> sjsamuels@gmail.com
> 18 Cantine's Island
> Saugerties NY 12477
> USA
> Voice: 845-246-0774
> Fax:    206-202-4783
>



-- 
Steven Samuels
sjsamuels@gmail.com
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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index