从R列中删除特殊字符和数字

时间:2020-10-10 11:34:09

标签: r tidyverse

我有一个看起来像这样的df-

df <- data.frame(c = c('X.Int.2', 'BI', 'X.Int..4', 'BI.4', 'X.Int.6'),
                 d = sample(1:5, replace=T))

我正在尝试从col d中删除所有特殊字符,“ X”和数字。

我尝试过

df %>%
  mutate(c = gsub("\\s[0-9()]+", '', c))

df %>%
    mutate(c = str_extract_all(c, "field:[a-zA-Z]+"))

都不会引发错误,但是第一个不会更改df,第二个会清空列。

我显然缺少明显的东西。

我希望-

c<-c('Int', "BI', 'Int', 'BI', 'Int')

3 个答案:

答案 0 :(得分:2)

在基数R中,您可以尝试使用gsub

gsub('[X.0-9]', '', df$c)
#> [1] "Int" "BI"  "Int" "BI"  "Int"

这将从"X"列中删除字符"."c和数字。

答案 1 :(得分:1)

删除X和数字

str_remove_all(df$c, "[X.]|[:digit:]")
#> [1] "Int" "BI"  "Int" "BI"  "Int"

内部变异:

df %>% 
  mutate(c = str_remove_all(c, "[X.]|[:digit:]"))
#>     c d
#> 1 Int 4
#> 2  BI 1
#> 3 Int 2
#> 4  BI 3
#> 5 Int 5

答案 2 :(得分:1)

gsub的另一个选项

gsub("[X.\\d+]", "", df$c, perl=TRUE)
#[1] "Int" "BI"  "Int" "BI"  "Int"