| recode_to {sjmisc} | R Documentation |
Recode variable categories into new values
Description
Recodes (or "renumbers") the categories of variables into new
category values, beginning with the lowest value specified by lowest.
Useful when recoding dummy variables with 1/2 values to 0/1 values, or
recoding scales from 1-4 to 0-3 etc.
recode_to_if() is a scoped variant of recode_to(), where
recoding will be applied only to those variables that match the
logical condition of predicate.
Usage
recode_to(x, ..., lowest = 0, highest = -1, append = TRUE, suffix = "_r0")
recode_to_if(
x,
predicate,
lowest = 0,
highest = -1,
append = TRUE,
suffix = "_r0"
)
Arguments
x |
A vector or data frame. |
... |
Optional, unquoted names of variables that should be selected for
further processing. Required, if |
lowest |
Indicating the lowest category value for recoding. Default is 0, so the new variable starts with value 0. |
highest |
If specified and greater than |
append |
Logical, if |
suffix |
Indicates which suffix will be added to each dummy variable.
Use |
predicate |
A predicate function to be applied to the columns. The
variables for which |
Value
x with recoded category values, where lowest indicates
the lowest value; If x is a data frame, for append = TRUE,
x including the recoded variables as new columns is returned; if
append = FALSE, only the recoded variables will be returned. If
append = TRUE and suffix = "", recoded variables will replace
(overwrite) existing variables.
Note
Value and variable label attributes are preserved.
See Also
rec for general recoding of variables and set_na
for setting NA values.
Examples
# recode 1-4 to 0-3
dummy <- sample(1:4, 10, replace = TRUE)
recode_to(dummy)
# recode 3-6 to 0-3
# note that numeric type is returned
dummy <- as.factor(3:6)
recode_to(dummy)
# lowest value starting with 1
dummy <- sample(11:15, 10, replace = TRUE)
recode_to(dummy, lowest = 1)
# lowest value starting with 1, highest with 3
# all others set to NA
dummy <- sample(11:15, 10, replace = TRUE)
recode_to(dummy, lowest = 1, highest = 3)
# recode multiple variables at once
data(efc)
recode_to(efc, c82cop1, c83cop2, c84cop3, append = FALSE)
library(dplyr)
efc %>%
select(c82cop1, c83cop2, c84cop3) %>%
mutate(
c82new = recode_to(c83cop2, lowest = 5),
c83new = recode_to(c84cop3, lowest = 3)
) %>%
head()