I have a dataframe in an excel sheet with some character values that I'd like to change to a different set of character values in R, however I have 184 different values across several columns that need to be changed to a different set of 184 values. The conversions between these values are listed in a vertical lookup table.
I can do a mutate with case_when, however this will take a very long time to write out all 184 values, and it's likely I will have to do this again indefinitely with other datasets of similar size. I would assume there was some way to do it by creating a lookup between two vectors of the same length?
Example data frame
df <- tibble(
Var1 = c("","Label 3", "Label 184", "Label 4", ""),
Var2 = c("","", "Label 1", "", "Label 2"),
Var3 = c("Label 2","Label 184", "Label 1", "", "Label 4")
)
Var1 Var2 Var3
<chr> <chr> <chr>
1 "" "" "Label 2"
2 "Label 3" "" "Label 184"
3 "Label 184" "Label 1" "Label 1"
4 "Label 4" "" ""
5 "" "Label 2" "Label 4"
Example lookup table
Lookup_table <- tibble(
x = c("Label 1","Label 2","Label 3","Label 4","Label 184"),
y = c("NewLabel 1","NewLabel 2","NewLabel 3","NewLabel 4","NewLabel 184")
)
x y
<chr> <chr>
1 Label 1 NewLabel 1
2 Label 2 NewLabel 2
3 Label 3 NewLabel 3
4 Label 4 NewLabel 4
5 Label 184 NewLabel 184
Intended outcome
Var1 Var2 Var3
<chr> <chr> <chr>
1 "" "" "NewLabel 2"
2 "NewLabel 3" "" "NewLabel 184"
3 "NewLabel 184" "NewLabel 1" "NewLabel 1"
4 "NewLabel 4" "" ""
5 "" "NewLabel 2" "NewLabel 4"