2016-02-02 2 views
0

Если у меня есть строка в R, скажем,Извлечение числа следующего определенной строки в R

x1 <- "abcAGE 13 dafkdj" # I want to get 13 

, и я хочу, чтобы извлечь это число 13 следующая «AGE» из него. Возможно, число имеет одну цифру или много цифр. Также возможно, что после «ВОЗРАСТ» нет пробела, после пробела «13» нет места. Например,

x2 <- "abcAGE7 dafkdj" # I want to get 7 
x3 <- "abcAGE 189dafkdj" # I want to get 189 

Как я могу получить это число в R? Благодарю.

Теперь, если строка имеет два «возраста» с, например,

x4 <- "abcAGE7 dafkdjAGE25ijdfkdf" # I want to get 7 and 25 

как я получаю оба номера?

ответ

2

Шер в вариант с использованием sub и извлечение захвата группы:

> sub(".*AGE ?(\\d+).*", "\\1", x1) 
[1] "13" 
> sub(".*AGE ?(\\d+).*", "\\1", x2) 
[1] "7" 
> sub(".*AGE ?(\\d+).*", "\\1", x3) 
[1] "189" 

Заверните его в as.numeric/as.integer для преобразования по мере необходимости.

Для чуть более сложного случая x4 вы можете использовать

trimws(regmatches(x4, gregexpr("(?<=AGE) ?\\d+", x4, perl=TRUE))[[1]]) 
[1] "7" "25" 
+0

Спасибо за быстрый ответ. У меня есть второй вопрос о последующих действиях, и я изменил свой первоначальный пост. –

+0

@PatrickLi, см. Мое обновление –

+0

Получил это. Большое спасибо! –

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