Как стандартизировать строки в R

#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"