R как извлечь часть текста на основе наличия определенных слов - PullRequest
0 голосов
/ 01 декабря 2018

'размер' Столбец моего набора данных содержит текст, подобный

row_1 =  "Small size From 3 mm long when unfed to 9 mm when fully engorged" 
row_2 =  "Tiny some microscopic Red mite only 0 4 mm diameter Worldwide many different"
row_3 = "Small spiders body length about 10 mm"

size = c(row_1, row_2, row_3)

Как мне извлечь данные в новом столбце, скажем 'new_size', как в

size_1 = '3mm, 9mm'
size_2 = '4mm'
size_3 = '10mm'

new_size = c(size_1, size_2, size_3)

У меня естьвидел методы подстроки, но не могу понять, как подобрать размер по разному тексту в каждой строке.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Попробуйте это:

Numb_Extract <- function(string){
    unlist(regmatches(string,gregexpr("[[:digit:]]+\\.*[[:digit:]]*",string)))
   }
row_1 =  "Small size From 3 mm long when unfed to 9 mm when fully engorged" 
p<-as.numeric(Numb_Extract (row_1))
print(p)
0 голосов
/ 01 декабря 2018

Используйте regmatches/gregexpr.

regmatches(size, gregexpr("[[:digit:]]+[[:space:]]mm", size))
#[[1]]
#[1] "3 mm" "9 mm"
#
#[[2]]
#[1] "4 mm"
#
#[[3]]
#[1] "10 mm"

Если вам нужен вектор, unlist результат.

size_n <- regmatches(size, gregexpr("[[:digit:]]+[[:space:]]mm", size))
unlist(size_n)
#[1] "3 mm"  "9 mm"  "4 mm"  "10 mm"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...