# RE: st: RE: Create categorical variable based on 'z-score'

 From "Nick Cox" To Subject RE: st: RE: Create categorical variable based on 'z-score' Date Thu, 27 Nov 2008 12:05:11 -0000

```replace z = sign(z) * ceil(abs(z))

is another way to do it.

Nick

Nick Cox

You want to round up when positive, down when negative.

egen z = std(foo)
replace z = cond(z == 0, 0, cond(z > 0, ceil(z), floor(z)))

George Hoffman

Thanks, nick. Egen std works. Can I nest floor(ceil(x)) to get the
desired
...?

Nick Cox <n.j.cox@durham.ac.uk>

> Despite various answers, no one mention -egen, std()- followed by
> -floor()- and -ceil(). All existing official Stata.

George Hoffman

> Generic problem: I'd like to create categorical variables for a list
of
> continuous variables. The categorical variables would be based upon
the
> z-score of each variable, such as:
> Z-score of X     catX
> <-2             -3
> -2 ..-1         -2
> -1 .. 0         -1
> 0               0
> 0.. +1          +1
> 1 ..2           +2
>> +2             +3
>
> If there were a way to z-transform variables, I could do an easy
> recode(catX)

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