У меня есть эти данные, которые я хочу заменить каждым значением на фиксированное значение из другого списка
values
key1
key3;key4;key1
key2;key1
Вот список, который «переводит» каждый ключ во что-то другое (это всего лишь примеры, поэтому не достаточно просто заменить слово «ключ» на «код».
key code
key1 code1
key2 code2
key3 code3
key4 code4
Таким образом, конечный продукт должен выглядеть следующим образом:
values
code1
code3;code4;code1
code2;code1
Вот как я пытался решить это но застряло:
values = tibble(id = 1:3, values = c("key1", "key3;key4;key1", "key2;key1"))
key_code = tibble(key = c("key1", "key2", "key3", "key4"), code = c("code1", "code2", "code3", "code4"))
values %>%
mutate(values = strsplit(values, ";")) %>%
unnest(values) %>%
left_join(key_code, by = c("values" = "key"))
Вот что я получаю
# A tibble: 6 x 2
id code
<int> <chr>
1 1 code1
2 2 code3
3 2 code4
4 2 code1
5 3 code2
6 3 code1
Отсюда я хочу получить:
id code
<int> <chr>
1 1 code1
2 2 code3;code4;code1
3 3 code2;code1