Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
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: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 <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 * * 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/