Извлечь числа до точки в текстовом поле в R - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь извлечь числа перед точкой для следующих текстов

question1 = "1.10.1.1. Опишите этот процесс"

question2 = "1.10.1. Опишите этот процесс это занимает 30 дней "

Итак, вот что делает трюк, но он также возвращает период, как мне избавиться от периода?

str_extract_all (вопрос1, "[0-9] + \.")

str_extract_all (вопрос2, "[0-9] + \.")

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Вы можете использовать заглядывание в своем регулярном выражении:

str_extract_all(question1,"[0-9]+(?=\\.)")
                                 ^^^^^^^

(?=\.) соответствует местоположению, за которым сразу следует точка. См. regex demo .

См. R demo :

library(stringr)
question1="1.10.1.1.Describe this process"
str_extract_all(question1,"[0-9]+(?=\\.)")
## [[1]]
## [1] "1"  "10" "1"  "1" 
question2="1.10.1. Describe this process that takes 30 days"
str_extract_all(question2,"[0-9]+(?=\\.)")
## [[1]]
## [1] "1"  "10" "1"
0 голосов
/ 28 января 2020

Мы можем использовать sub из base R, чтобы соответствовать ., за которым следует ноль или более пробелов (\\s*), за которыми следуют одна или несколько букв и других символов (.*), и в замене укажите пробел ("") и передайте этот ввод в read.table для создания data.frame

read.table(text = sub("\\.\\s*[A-Za-z]+.*", "", txt),
      header = FALSE, fill = TRUE, sep=".")
#   V1 V2 V3 V4
#1  1 10  1  1
#2  1 10  1 NA

data

txt <- c("1.10.1.1.Describe this process", 
        "1.10.1. Describe this process that takes 30 days")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...