#r #string
#r #строка
Вопрос:
У меня есть серия файлов из разных периодов времени. Эти данные имеют похожие имена столбцов, но отличаются тем, как форматируются значения.
a <- c("123-OldStyle", "123.Old Style", "(123) Old Style"))
Я могу сделать это вручную с помощью a dplyr::recode
, я полагаю, но я не могу заставить это перекодировать для работы с вектором.
dplyr::recode(a, "123-OldStyle" = "123 New Style")
vec_recode <- c("123-OldStyle" = "123 New Style", "123.Old Style" = "123 New Style", "(123) Old Style" = "123 New Style"))
Я мог бы сделать это с помощью long ifelse
, но я бы предпочел не делать все это вручную.
Ответ №1:
Мы можем использовать !!!
для именованного вектора с recode
, чтобы преобразовать его в New Style
dplyr::recode(a, !!! vec_recode)
-вывод
#[1] "123 New Style" "123 New Style" "123 New Style"
Кроме того, в base R
, мы можем просто выполнить сопоставление с [
, поскольку у нас есть именованный вектор
unname(vec_recode[a])
#[1] "123 New Style" "123 New Style" "123 New Style"
Ответ №2:
Вы также можете очистить строку таким образом:
#Code
gsub('OldStyle','Old Style',gsub('[[:punct:] ] ',' ',a))
Вывод:
[1] "123 Old Style" "123 Old Style" " 123 Old Style"