2016-10-04 2 views
1

Я хотел бы извлечь строку из столбца, если ее длина находится между 6-10. Эти строки разделены пробелами.R - Извлечь строку на основе ее длины из столбца

Пример:

Column A 

" 3 89 -90/ 900407-2" 
" 3 9 -90/ 900407-1" 
" 89 -9011/ 800408" 

Вывод должен быть:

Output column 

    900407-2 
    900407-1 
    800408 

Спасибо за вашу помощь!

+0

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

ответ

0

Используйте это:

A <- c(" 3 89 -90/ 900407-2", 
     " 3 9 -90/ 900407-1", 
     " 89 -9011/ 800408") 
gsub(".*/.*([0-9].*?)", "\\1", A) 
#[1] "900407-2" "900407-1" "800408" 
+0

@ sandipan- Это решение сработало. Спасибо! – ksp585

1

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

([\w+\-]){6,} 

соответствий каждую строку с "-", {6} означает, 6 или более ..

Demo здесь: https://regex101.com/r/3BjrLW/1

0

Попробуйте использовать:

x <- gsub(".* (.*)", "\\1", x) 

Если вы хотите ограничить в строки с 6 до 10 символов, минус дефис, вы можете использовать:

lens <- nchar(gsub("-", "", x)) 
x <- x[lens >= 6 & lens <= 10] 
Смежные вопросы