Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: rounding values in a large subset of variables
From
Nick Cox <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: rounding values in a large subset of variables
Date
Tue, 11 Feb 2014 14:49:33 +0000
-replace- is a command, not a function.
That aside, the syntax of -replace- is given by its help
replace oldvar =exp [if] [in] [, nopromote]
so stripping off the bracketed elements, the syntax only allows one
existing variable name and correspondingly the expression to define
the newly changed variable.
You need a loop.
foreach v of var eg_rs* {
replace `v' = round(`v')
}
However, that way you lose information. Unless you are completely sure
that this is exactly what you want, then generating new variables
would be safer:
foreach v of var eg_rs* {
gen `v'_r = round(`v')
}
Nick
[email protected]
On 11 February 2014 14:43, Emeline Gauthiez <[email protected]>
> I have a large subset of variables all starting with the prefix eg_rs*,
> with values between
> 0 and 2 I would like to round them all to 0, 1 or 2. (see example (actual
> dataset is much larger))
>
> I tried with the replace function :
> replace eg_rs*=round(eg_rs*)
>
> but it doesn't work...
>
> -example begin-
>
> What I have :
> id eg_rs2660 eg_rs3452 eg_rs7894
> 1001 1 0.99 0.85
> 1002 0 1 2
> 1003 2 1.99 1
> 1004 1.12 2 2
> 1005 0.3 0 1
> 1006 1 0 0.78
>
>
> What I'd like :
> id eg_rs2660 eg_rs3452 eg_rs7894
> 1001 1 1 1
> 1002 0 1 2
> 1003 2 2 1
> 1004 1 2 2
> 1005 0 0 1
> 1006 1 0 1
>
> -example end-
>
> Any help will be very much appreciated, thanks!
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/