Extrair apenas o numéro

Boa tarde!

Preciso criar uma coluna com números de projetos. Para conseguir essa informação, eu preciso extrair o primeiro número de caminho de Action, como na imagem abaixo.

O número do projeto é sempre o primeiro número que aparece nessa string. Ele pode chegar a ter até 2 dígitos, normalmente.

Tentei isso aqui, mas não deu certo:

user_log$Projeto[lines] = str_extract(user_log$Action[lines], regex="/[0-9]")

O que posso fazer?

Kaique, boa noite!

Eu fiz uma solução bem simples, não sei se vai resolver todos os casos que você vier a encontrar, segue exemplo:

# Item por item -----------------------------------------------------------
string1 <- "/project/export/2/flutter/451/801"
string2 <- "/project/predict/start/1"
string3 <- "/project/predict/start/12asve/12ds"

stringr::str_extract(
    string1,
    "[0-9]+"
)
#> [1] "2"


stringr::str_extract(
    string2,
    "[0-9]+"
)
#> [1] "1"

stringr::str_extract(
    string3,
    "[0-9]+"
)
#> [1] "12"


# Extraindo de uma base de dados ------------------------------------------
db <-tibble::tribble(
    ~action,
    "/project/export/2/flutter/451/801",
    "/project/predict/start/1",
    "/project/predict/start/12asve/12ds"
)


db |> 
    dplyr::mutate(
        numero_projeto = stringr::str_extract(
            string = action,
            pattern = "[0-9]+"
        )
    )
#> # A tibble: 3 x 2
#>   action                             numero_projeto
#>   <chr>                              <chr>         
#> 1 /project/export/2/flutter/451/801  2             
#> 2 /project/predict/start/1           1             
#> 3 /project/predict/start/12asve/12ds 12

Created on 2021-12-16 by the reprex package (v2.0.1)

O que fiz foi usar o str_extract que vai extrair a primeira correspondência que ele encontrar (no caso, queremos sempre o primeiro número). Como regex usei [0-9]+ pra trazer qualquer número grudado nesse primeiro número (para conseguir abordar os casos onde o projeto tem dois ou mais dígitos).

Espero que isso ajude!

Muito obrigado! Deu super certo. Valeu mesmo.

1 Curtida