【问题标题】:Remove special characters and numbers from column R从 R 列中删除特殊字符和数字
【发布时间】:2020-10-10 11:34:09
【问题描述】:

我有一个看起来像这样的 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')

【问题讨论】:

  • 抱歉 - 应该添加 as.data.frame!
  • 不需要cbinddf&lt;-data.frame(c,d)
  • 抱歉,这些是我的示例中的错误,而不是我的实际 df(更长),我不确定如何在这里完全复制它。

标签: r tidyverse


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    删除 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
    

    【讨论】:

      【解决方案3】:

      gsub 的另一个选项

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

      【讨论】:

        猜你喜欢
        • 2020-02-12
        • 2022-01-22
        • 2019-04-01
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 2020-06-30
        • 2022-08-14
        • 2016-11-30
        相关资源
        最近更新 更多