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]

st: RE: how to specify the decimals for output--con't


From   Nick Cox <n.j.cox@durham.ac.uk>
To   "'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu>
Subject   st: RE: how to specify the decimals for output--con't
Date   Thu, 13 Oct 2011 18:18:27 +0100

For examples, we read in 

. sysuse auto, clear
(1978 Automobile Data)

What you say about -fre- (Ben Jann, SSC) is incorrect. 

-fre- is explicit that it is for one-way tables, but you can call it with -by:-:

. bysort foreign : fre rep78

-> foreign = Domestic

rep78 -- Repair Record 1978
-----------------------------------------------------------
              |      Freq.    Percent      Valid       Cum.
--------------+--------------------------------------------
Valid   1     |          2       3.85       4.17       4.17
        2     |          8      15.38      16.67      20.83
        3     |         27      51.92      56.25      77.08
        4     |          9      17.31      18.75      95.83
        5     |          2       3.85       4.17     100.00
        Total |         48      92.31     100.00           
Missing .     |          4       7.69                      
Total         |         52     100.00                      
-----------------------------------------------------------

-> foreign = Foreign

rep78 -- Repair Record 1978
-----------------------------------------------------------
              |      Freq.    Percent      Valid       Cum.
--------------+--------------------------------------------
Valid   3     |          3      13.64      14.29      14.29
        4     |          9      40.91      42.86      57.14
        5     |          9      40.91      42.86     100.00
        Total |         21      95.45     100.00           
Missing .     |          1       4.55                      
Total         |         22     100.00                      
-----------------------------------------------------------

What you say about -groups- is also incorrect for the same reason. As the help explains, 

"by ...: may be used with groups; see help by.  Note in particular that this is the key to
    controlling how percents are calculated; that is, under by percents sum to 100 within
    distinct categories defined by its varlist."

As you say, by default percents are just for the whole table. 

. groups for rep78

  +------------------------------------+
  |  foreign   rep78   Freq.   Percent |
  |------------------------------------|
  | Domestic       1       2      2.90 |
  | Domestic       2       8     11.59 |
  | Domestic       3      27     39.13 |
  | Domestic       4       9     13.04 |
  | Domestic       5       2      2.90 |
  |------------------------------------|
  |  Foreign       3       3      4.35 |
  |  Foreign       4       9     13.04 |
  |  Foreign       5       9     13.04 |
  +------------------------------------+

But applying -by:- gives you conditional percents: 

. bysort for: groups rep78, format(%2.1f)

-> foreign = Domestic

  +---------------------------------+
  | rep78   Freq.   Percent    Cum. |
  |---------------------------------|
  |     1       2       4.2     4.2 |
  |     2       8      16.7    20.8 |
  |     3      27      56.3    77.1 |
  |     4       9      18.8    95.8 |
  |     5       2       4.2   100.0 |
  +---------------------------------+

-> foreign = Foreign

  +---------------------------------+
  | rep78   Freq.   Percent    Cum. |
  |---------------------------------|
  |     3       3      14.3    14.3 |
  |     4       9      42.9    57.1 |
  |     5       9      42.9   100.0 |
  +---------------------------------+


There is an undocumented -nby()- option that gives a more compact display: 

. groups foreign rep78, format(%2.1f) nby(1)

  +------------------------------------+
  |  foreign   rep78   Freq.   Percent |
  |------------------------------------|
  | Domestic       1       2       4.2 |
  | Domestic       2       8      16.7 |
  | Domestic       3      27      56.3 |
  | Domestic       4       9      18.8 |
  | Domestic       5       2       4.2 |
  |------------------------------------|
  |  Foreign       3       3      14.3 |
  |  Foreign       4       9      42.9 |
  |  Foreign       5       9      42.9 |
  +------------------------------------+


Nick 
n.j.cox@durham.ac.uk 

Lan Zhang

Thanks so much for your responses (see below) for my problems. Now I
want to calculate either row or column percentages (usually I use 'tab
var1 var2, row/col', and by default it gives the percentages with two
decimals), and would also like to output one decimal (or maybe three
or four) for each value. It seems the 'fre' and 'groups' can't do
this. They could only give the percentages out of total N.


> Date: Wed, 12 Oct 2011 10:06:20 -0500
> From: Lan Zhang <lanvandy@gmail.com>
> Subject: st: how to specify the decimals for output
>
> When use 'tab var' for frequencies of categorical variables, Stata
> gives the percentages of two decimals. I wanna just one decimal. How
> to change it? I didn't find any optional commands that has this
> function. If I can't achieve this from the 'tab' command, how could I
> do it using other command that may also give the percentages of the
> categories.
>

> Date: Wed, 12 Oct 2011 11:55:04 -0400
> From: Austin Nichols <austinnichols@gmail.com>
> Subject: Re: st: how to specify the decimals for output
>
> Lan Zhang <lanvandy@gmail.com> :
>
> ssc inst fre
> sysuse auto, clear
> fre rep78, f(1) nomiss
>
> On Wed, Oct 12, 2011 at 11:06 AM, Lan Zhang <lanvandy@gmail.com> wrote:
>> When use 'tab var' for frequencies of categorical variables, Stata
>> gives the percentages of two decimals. I wanna just one decimal. How
>> to change it? I didn't find any optional commands that has this
>> function. If I can't achieve this from the 'tab' command, how could I
>> do it using other command that may also give the percentages of the
>> categories.
> *

> Date: Wed, 12 Oct 2011 17:59:48 +0100
> From: Nick Cox <njcoxstata@gmail.com>
> Subject: Re: st: how to specify the decimals for output
>
> Also
>
> ssc inst groups
> sysuse auto
> groups foreign, format(%2.1f)
>
>  +------------------------------------+
>  |  foreign   Freq.   Percent    Cum. |
>  |------------------------------------|
>  | Domestic      52      70.3    70.3 |
>  |  Foreign      22      29.7   100.0 |
>  +------------------------------------+
>
> - -fre- is spectacular for one-way tabulation.
>
> - -groups- can do n-way tables, but always collapsed to one dimension.
>
> Nick .
>
> On Wed, Oct 12, 2011 at 4:55 PM, Austin Nichols <austinnichols@gmail.com> wrote:
>> Lan Zhang <lanvandy@gmail.com> :
>>
>> ssc inst fre
>> sysuse auto, clear
>> fre rep78, f(1) nomiss
>>
>> On Wed, Oct 12, 2011 at 11:06 AM, Lan Zhang <lanvandy@gmail.com> wrote:
>>> When use 'tab var' for frequencies of categorical variables, Stata
>>> gives the percentages of two decimals. I wanna just one decimal. How
>>> to change it? I didn't find any optional commands that has this
>>> function. If I can't achieve this from the 'tab' command, how could I
>>> do it using other command that may also give the percentages of the
>>> categories.
> *

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