x
into new
category values.rec(x, recodes)
factor
with numeric
levels that should be recoded.recodes
string has following syntax:
;
, e.g.recodes = "1=1; 2=4; 3=2; 4=3"
"1,2=1; 3,4=2"
"1:4=1; 5:8=2"
(recodes all values from 1 to 4 into 1, and from 5 to 8 into 2)"min:4=1; 5:max=2"
(recodes all values from minimum values ofx
to 4 into 1, and from 5 to maximum values ofx
into 2)"3=1; 1=2; else=3"
(recodes 3 into 1, 1 into 2 and all other values into 3)NA
values are allowed both as old and new value, e.g."NA=1; 3:5=NA"
(recodes all NA from old value into 1, and all old values from 3 to 5 into NA in the new variable)"rev"
is a special token that reverses the value order (see examples)get_var_labels
)
are retained, however, value label attributes are removed.set_na
for setting NA
values and recode_to
for re-shifting value ranges.data(efc)
table(efc$e42dep, exclude = NULL)
# replace NA with 5
table(rec(efc$e42dep, "1=1;2=2;3=3;4=4;NA=5"), exclude = NULL)
# recode 1 to 2 into 1 and 3 to 4 into 2
table(rec(efc$e42dep, "1,2=1; 3,4=2"), exclude = NULL)
# recode 1 to 3 into 4 into 2
table(rec(efc$e42dep, "min:3=1; 4=2"), exclude = NULL)
# recode 2 to 1 and all others into 2
table(rec(efc$e42dep, "2=1; else=2"), exclude = NULL)
# reverse value order
table(rec(efc$e42dep, "rev"), exclude = NULL)
Run the code above in your browser using DataLab