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()