# RE: st: bottom to top or reverse cumulative distribution in table command?

 From "Nick Cox" <[email protected]> To <[email protected]> Subject RE: st: bottom to top or reverse cumulative distribution in table command? Date Wed, 20 Jan 2010 11:19:11 -0000

```Maarten and Martin correctly pointed out that you can re-create such tabulations for yourself from first principles.

However, a more elaborate canned alternative is available. See -groups- from SSC. There was some discussion in

SJ-3-4  pr0011  . . . . . . . .  Speaking Stata: Problems with tables, Part II
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J. Cox
Q4/03   SJ 3(4):420--439                                 (no commands)
reviews three user-written commands (tabcount, makematrix,
and groups) as different approaches to tabulation problems

which is available on-line at the Stata Journal website.

Nick
[email protected]

Martin Weiss

Similarly:

sysuse auto, clear
cumul rep78, generate(cumrep78) equal
gen reversecumrep78=1-cumrep78
bys rep78: egen freq=count(rep78)
bys rep78: keep if _n==1
l rep78 freq reversecumrep78

Maarten buis

--- Stefan Gawrich wrote:
> Is there any univariate table command available that displays a
> bottom to top or reverse cumulative distribution? One example:
> I have data on the number of vaccine doses given (0..9) and want
> to know the percentage of cases having at least 4 or 3 or 2 doses.

I don't know of such a program, but it is easy enough to create it.
Below is such a program -reversecum-. It gives for each value the
percentage of observations that have that value or more (excluding
missing values), it allows for -fweights- and -if- and -in-
conditioning.

This program will be normally available on your computer like any
other Stata command, if you copy the line starting with
"*! version..." and ending with "end" (inclusive) into a file
(type in Stata -adopath- to find out where that is).

Alternatively, you can put these lines at the top of your do-file,
and this program will than be available while running that do-file,
like in the example below.

*-------------- begin example -----------------
program drop _all
*! version 1.0.0 MLB 20Jan2010
program reversecum
syntax varname [if] [in] [fweight]
marksample touse
tempvar _freq cum r_cum
if "`weight'" != "" {
local wgt "[`weight'`exp']"
}
preserve
contract `varlist' if `touse' `wgt', ///
freq(`_freq') cpercent(`cum') nomiss
qui gen double `r_cum' = 100 - `cum'[_n-1]
qui replace `r_cum' = 100 in 1
format `r_cum' %8.2f
label var `r_cum' "reverse Cum"
tabdisp `varlist', cell(`_freq' `r_cum')
restore
end

sysuse auto, clear
reversecum rep78
*-------------------- end example -----------------------
( For more on how to use examples I sent to statalist see:
http://www.maartenbuis.nl/stata/exampleFAQ.html )

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

• Follow-Ups:
• References: