Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

RE: st: Tabulating "missing" values


From   "Nick Cox" <[email protected]>
To   <[email protected]>
Subject   RE: st: Tabulating "missing" values
Date   Thu, 10 Apr 2003 11:06:16 +0100

Michael Oakes <[email protected]> wrote:
 
> > Hoping this isn't too obvious, but I cannot figure out 
> how to fill-in rows
> > for response values that do not appear in my data but do exist
> > hypothetically.
> 
> > Imagine a variable, call it q5, that has possible 
> responses 1, 2, 3, and 4;
> > let it be a simple Likert scale for example. The trouble 
> is if survey
> > respondents only endorse/check values of 3 or 4, then my 
> table will look
> > like this
> 
> > . tab q5, nolab
> 
> >             |
> >        q5   |
> >             |      Freq.     Percent        Cum.
> > ------------+-----------------------------------
> >           3 |         14       24.14       24.14
> >           4 |         44       75.86      100.00
> > ------------+-----------------------------------
> >       Total |         58      100.00
> 
> > But what I want is (something like) this, which I made 
> the "hard-way" via
> > cut/paste
> 
> >        q5   |
> >             |      Freq.     Percent        Cum.
> > ------------+-----------------------------------
> >           1 |          0        0.0          0.0
> >           2 |          0        0.0          0.0
> >           3 |         14       24.14       24.14
> >           4 |         44       75.86      100.00
> > ------------+-----------------------------------
> >       Total |         58      100.00
> 
> > In this example the hypothetical values of 1 and 2 are 
> represented, which is
> > nice if I want to apply value labels and such for presentation.
> 
> > I've looked at -tabcond- and a few other adaptations but 
> cannot find what I
> > want -- I do not seem to understand -tabcond- if that 
> would do the trick.
> 
> > Solutions?

Shannon Driver 
> 
> Though this may not be the most elegant code, here is one 
> way to get the 
> results that I believe you want.  I'm sure it could be 
> expanded to allow more
> statistics and options.
> 
>     program tabrange

	< snip > 

>     end
> 
> Here are the results you get:
> 
>     . tabrange q5, range(1/4)
> 
>       +-------------------------------+
>       |  q5   Freq   Percent      Cum |
>       |-------------------------------|
>       |   1      0      0.00     0.00 |
>       |   2      0      0.00     0.00 |
>       |   3     14     24.14    24.14 |
>       |   4     44     75.86   100.00 |
>       |-------------------------------|
>       | Sum     58    100.00          |
>       +-------------------------------+
> 
>     . tabrange q5, range(1 3 4 8)
> 
>       +-------------------------------+
>       |  q5   Freq   Percent      Cum |
>       |-------------------------------|
>       |   1      0      0.00     0.00 |
>       |   3     14     24.14    24.14 |
>       |   4     44     75.86   100.00 |
>       |   8      0      0.00   100.00 |
>       |-------------------------------|
>       | Sum     58    100.00          |
>       +-------------------------------+
> 
>     . tabrange q5, range(14)
>     No observations for q5 in given range.

-tabcond- (SSC) can be used to produce an awkward and 
indeed only partial solution 
for Michael's example, but only because the number of 
possible values contemplated is not more than 5. It 
is quite likely that that need not be true for real 
examples. 

-tabrange- from Shannon is a much better solution for 
of producing the results required. Note that -tabrange- 
could be a little slow for very large data sets. While 
it is still in an early stage, I'd like to float 
a possible name change. The connotations of "range" 
are strong here, and possibly misleading. Perhaps "values"?  

*
*   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/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index