I have found something like this to be useful:
bys group: tab race
bys group: tab race sex
etc.
bys is shorthand for "by" plus "sort".
Alternatively, you can do something like this:
sum group
scalar min=r(min)
scalar max=r(max)
local i=min
while `i'<=max {
display _newline(2) "group is `i'"
tab race if group==`i'
tab sex if group==`i'
tab race sex if group==`i'
local i=`i'+1
}
Scalar min and max are defined as the min and max of your group variable.
In your case, min is 1 and max is 50. You could have specified them
yourself instead of defining a scalar. The loop goes trough your group
variable and executes commands based for each group i.
I hope that helps.
Dimitriy Masterov
On Fri, 1 Aug 2003, Robert Bozick wrote:
> I know that in SPSS there is way to set a filter for a series of commands using a 'do if' statement. Is there a way to do this in STATA? For example, I want to perform a large set of analyses on a set of groups (group == 1....group == 50). Do I have to continue to type if group == 1 after each command? ex:
>
> tab race if group == 1
> tab sex if group == 1
> tab race sex if group == 1
>
> tab race if group == 2
> tab sex if group == 2
> tab race sex if group == 2
>
> or, is there a way to globally set off group == 1 for all analyses then a command to globally set off group == 2 for all analyses, and so on...? The above code seems too cumbersome.
>
>
> *
> * 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/
>
_______________________________________________________________________________
Dimitriy V. Masterov
Work:
Center for Social Program Evaluation
1155 East 60th St. Room 038
Chicago, IL 60637
Work: (773)256-6005
Fax: (773)256-6313
Home:
1312 East 53rd St., Apt.309
Chicago, IL 60615
Mobile: (773)220-2760
*
* 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/