Suppose I have a dataframe:
df <- data.frame(
x = c("Yes","No","Yes","Don't Know"),
y = c("Male","Female","Refused","Male"),
z = c("Employed", "Unemployed","Employed","Employed")
)
I want to recode the values in the entire dataframe to numeric values and have the codes stored in a separate dataframe:
codes <- data.frame(
variable = c(rep("x",3),rep("y",3),rep("z",2)),
labels = c("Yes","No","Don't Know","Male","Female","Refused","Employed", "Unemployed"),
codes = c(1,2,98,1,2,99,1,2)
)
I want to output to look like:
> df
x y z
1 1 1 1
2 2 2 2
3 1 99 1
4 98 1 1
How can I approach this problem? A tidyverse solution would be very helpful.