Regex - Como deletar qualquer número seguido de %?

Prezadxs, olá!

Estou com um problema e não consigo definir o regex exato apra resolvê-lo.

Preciso excluir todos os números percentuais em uma coluna, ou seja, tudo que é número seguido de “%”, como 12,8%. Tentei algumas coisas mas o que consegui foi somente deletar todos os números ou somente o % e a vírgula.

Alguém poderia dar um help, por gentileza?

Segue exemplo:

# carregar pipe
library(magrittr, include.only = "%>%")

# base de exemplo
database <- 
  tibble::tribble(
  ~caracterstica, ~numeros,
             "a", "85,50%",
             "b", "12,80%",
             "c",  "369,7",
             "d",  "0,95%",
             "e", "88,70%"
  )


# eu apenas consigo deleetar o %, mas não o número junto
database %>% 
  dplyr::mutate(numeros = stringr::str_remove_all(numeros, ".%$"))
#> # A tibble: 5 x 2
#>   caracterstica numeros
#>   <chr>         <chr>  
#> 1 a             85,5   
#> 2 b             12,8   
#> 3 c             369,7  
#> 4 d             0,9    
#> 5 e             88,7


# consigo filtrar apenas eles, mas como eu deleto?
database %>% 
  dplyr::filter(stringr::str_detect(numeros, "%$"))
#> # A tibble: 4 x 2
#>   caracterstica numeros
#>   <chr>         <chr>  
#> 1 a             85,50% 
#> 2 b             12,80% 
#> 3 d             0,95%  
#> 4 e             88,70%

Created on 2021-06-24 by the reprex package (v2.0.0)

Observação: Não posso apenas filtrar o que não tem “%” porque senão perco a info de outras colunas.

Agradeço qualquer ajuda!

Abraços.

Oi, Maykon!

Acho que um case_when() resolve.

database <- tibble::tribble(
  ~caracterstica, ~numeros,
  "a", "85,50%",
  "b", "12,80%",
  "c",  "369,7",
  "d",  "0,95%",
  "e", "88,70%"
)

database |> 
  dplyr::mutate(
    numeros = dplyr::case_when(
      stringr::str_detect(numeros, "%") ~ NA_character_,
      TRUE ~ numeros
    )
  )
#> # A tibble: 5 x 2
#>   caracterstica numeros
#>   <chr>         <chr>  
#> 1 a             <NA>   
#> 2 b             <NA>   
#> 3 c             369,7  
#> 4 d             <NA>   
#> 5 e             <NA>

Created on 2021-06-24 by the reprex package (v2.0.0)

2 curtidas

Perfeito, Will!
Bem mais prático do que imaginei, tava indo pelo caminho complexo haha
Muito obrigado!

1 curtida