2016-06-29 4 views
-1

У меня есть data.frame example с переменным (care_group) следующим образом:R замена с GSUB использования образца с длиной больше 1

> example 
     care_group 
    1 1st Choice Care Homes 8.8 
    2 2Care 
    3 229 Mitcham Lane Ltd 
    4 3 L Care Ltd 
    5 3AB Care Ltd 
    6 9Grace Road Ltd 
    7 A&R Care Ltd 9.7 
    8 ABLE (Action for a Better Life) 
    9 A C L Care Homes Ltd 
    10 A D L plc 
    11 A D R Care Homes Ltd 
    12 A G E Nursing Homes Ltd 8 

Как вы можете заметить, некоторые из моих наблюдений являются буквенно-цифровыми и содержать числа как в начале, так и в конце имени. Я знаю, что можно избавиться от числовых символов (см., Например, here). Тем не менее, я не знаю, как удалить только некоторые из них. Конкретно, удалите числа, содержащиеся в конце имени, и сохраните их в начале. Я попытался сделать это, создав группу с номерами, которые я хочу удалить, и попытаюсь использовать gsub.

ratings = c("8", "8.8", "9.7") 
example$new_var = with(example, gsub(ratings, " ", care_group)) 

Однако я получаю это предупреждение:

Warning message: 

In gsub(ratings, " ", care_group) : 
    argument 'pattern' has length > 1 and only the first element will be used 

Интересно, можно ли использовать GSUB с рисунком, который имеет длину> 1 или может ли кто-то предложить более эффективный способ решения с этим. Спасибо заранее.

+2

Возможный дубликат [Удалить номера из буквенно-цифровых символов] (http://stackoverflow.com/questions/13590139/remove-numbers-from-alphanumeric-characters) – user2100721

ответ

1

Лучше использовать якорь и символьный класс:

# sample of vector with various possibilities 
temp <- c(" 7 A&R Care Ltd 9.7", "A C L Care Homes Ltd", "12 A G E Nursing Homes Ltd 8") 

gsub(" [0-9.]+$", "", temp) 

[1] " 7 A&R Care Ltd" "A C L Care Homes Ltd"  "12 A G E Nursing Homes Ltd" 

В регулярном выражении

  • в $ якоря Выражение в конце текста
  • «[0-9 .] + "говорит любая последовательность числовых символов, включая". "
+0

Благодаря @Imo. Имеет больше смысла, чем решение, которое у меня было, но оно, похоже, не вносит никаких изменений. – Edu

+0

Он работает с данными примера, как показано в моем ответе. Что в ваших реальных данных отличается? – lmo

+0

Это данные, которые я получил, сломав веб-сайт с помощью 'rvest'. Я думаю, что ваше решение будет работать в конечном итоге, но уровни переменной отличаются от того, что видно на консоли. Я работаю над этим, и я обновлю результаты. Спасибо в любом случае @Imo – Edu

Смежные вопросы