Or, if this kind of thing comes up a lot, write your own program to suit, e.g.
clear all
prog tabz
syntax [varlist(min=1 max=2)] [if] [, all]
preserve
marksample touse
collapse (sum) `touse', by(`varlist') fast
if "`all'"=="all" tabdisp `varlist', c(`touse')
else {
tokenize `varlist'
tempvar s
egen `s'=sum(`touse'), by(`1')
drop if `s'==0
tabdisp `varlist', c(`touse')
}
end
sysuse auto
ren foreign f
tabz rep78 f if f==1 & price>10000
tabz rep78 f if f==1 & price>10000, all
On Mon, Aug 17, 2009 at 1:24 PM, Richard
Goldstein<[email protected]> wrote:
> worked great -- thank you very much
>
> Rich
>
> Howard Lempel wrote:
>>
>> One method that should work:
>>
>> sysuse auto
>> egen include = total(foreign==1 & price>10000), by(rep78)
>> tab rep78 if price>10000 & include>0
>>
>> Hope this helps.
>> Howie
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of Richard Goldstein
>> Sent: Monday, August 17, 2009 12:10 PM
>> To: statalist
>> Subject: st: limiting rows in tabulate
>>
>> Hi:
>>
>> I am still using version 10.1
>>
>> the row variable is a string variable
>>
>> I have sent a client the results of a tabulate command based on a couple
>> of "if"'s
>>
>> My client now wants me to drop one of the if's and do a new tab but
>> ensure that only the same rows (values) appear in the tab -- that is, if
>> a row was previously eliminated by the -if- that is now being dropped,
>> that row should still be eliminated
>>
>> an example might make this clearer; say I do:
>>
>> . ta rep78 if foreign==1 & price>10000
>>
>> Repair |
>> Record 1978 | Freq. Percent Cum.
>> ------------+-----------------------------------
>> 5 | 1 100.00 100.00
>> ------------+-----------------------------------
>> Total | 1 100.00
>> r; t=0.00 9:05:11
>>
>> I now want to drop the foreign=1 condition but still have a table that
>> only shows the row for rep78=5
>>
>> actually what is wanted now is a crosstab where the column variable was
>> the old -if- condition, but the rows are limited; e.g.,
>> . ta rep78 foreign if price>10000
>>
>> Repair |
>> Record | Car type
>> 1978 | Domestic Foreign | Total
>> -----------+----------------------+----------
>> 2 | 1 0 | 1
>> 3 | 7 0 | 7
>> 5 | 0 1 | 1
>> -----------+----------------------+----------
>> Total | 8 1 | 9
>>
>> but of course I would only want the row for "5"; in my actual data, the
>> requested table would have more than 100 rows so I can't use a simple -if-
>>
>> Rich
*
* 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/