{smcl}
{hline}
help for {hi:pcontract}{right:(Roger Newson)}
{hline}

{title:Make dataset of frequencies and percentages}

{p 8 17 2}{cmd:pcontract} {it:varlist} [{it:weight}] [{cmd:if} {it:exp}] [{cmd:in} {it:range}] [{cmd:,}
{cmdab:f:req:(}{it:varname}{cmd:)} {cmdab:p:ercent:(}{it:varname}{cmd:)}
{cmdab:cf:req:(}{it:varname}{cmd:)} {cmdab:cp:ercent:(}{it:varname}{cmd:)}
{cmd:float} {cmdab:form:at}{cmd:(}{it:format}{cmd:)}
{cmdab:z:ero} {cmd:nomiss} ]

{p 4 4 2}
{cmd:fweight}s are allowed; see help {help weights}.


{title:Description}

{p 4 4 2}
{cmd:pcontract} is an extended version of {help contract}.
It replaces the dataset in memory with a new dataset consisting
of all combinations of {it:varlist} that exist in the data and new variables
containing the frequency and percentage of each combination,
and, optionally, the cumulative frequency and percentage of each combination.


{title:Options}

{p 4 8 2}{cmd:freq}{cmd:(}{it:varname}{cmd:)} specifies a name for the frequency
variable.  If not specified, {cmd:_freq} is used. The name must be new.

{p 4 8 2}{cmd:percent}{cmd:(}{it:varname}{cmd:)} specifies a name for the percentage
variable.  If not specified, {cmd:_percent} is used. The name must be new.

{p 4 8 2}{cmd:cfreq}{cmd:(}{it:varname}{cmd:)} specifies a name for the cumulative
frequency variable.  If not specified, no cumulative frequency variable is created.
The name must be new.

{p 4 8 2}{cmd:cpercent}{cmd:(}{it:varname}{cmd:)} specifies a name for the cumulative
percentage variable.  If not specified, no cumulative percentage variable is created.
The name must be new.

{p 4 8 2}{cmd:float} specifies that the percentage variables specified by
{cmd:percent} and {cmd:cpercent} will be generated as variables of type {help float}.
If {cmd:float} is not specified, then these variables will be generated as variables
of type {help double}. All generated variables are compressed to the smallest
storage type possible without loss of precision. See help for {help compress}.

{p 4 8 2}{cmd:format}{cmd:(}{it:format}{cmd:)} specifies a {help format:display format}
for the generated percentage variables specified by {cmd:percent()} and {cmd:cpercent()}.
If {cmd:format()} is not specified, then these variables will have the
{help format:display format} {hi:%8.2f}.

{p 4 8 2}{cmd:zero} specifies that combinations with frequency zero are wanted.

{p 4 8 2}{cmd:nomiss} specifies that observations with missing values on any of
the variables in {it:varlist} will be dropped.  If not specified, all
observations possible are used.


{title:Examples}

{p 4 8 2}{cmd:. pcontract foreign rep78}{p_end}
{p 4 8 2}{cmd:. pcontract foreign rep78, zero}{p_end}
{p 4 8 2}{cmd:. pcontract foreign rep78, f(count) zero nomiss}{p_end}
{p 4 8 2}{cmd:. pcontract foreign rep78,fr(frequency) per(percentage) cf(cumfreq) cp(cumperc) float format(%4.0f)}{p_end}

{p 4 8 2}{cmd:. pcontract _all}


{title:Also see}

    Manual:  {hi:[R] contract}, {hi:[R] compress}, {hi:[R] format}

{p 4 13 2}Online:  help for {help contract}, {help compress}, {help format},
{help expand}; {help collapse}, {help duplicates}