【问题标题】:How to standardize strings in R如何在 R 中标准化字符串
【发布时间】:2020-10-19 18:37:08
【问题描述】:

我有一系列不同时期的文件。这些数据具有相似的列名,但值的格式不同。

a <- c("123-OldStyle", "123.Old Style", "(123) Old Style"))

我想我可以使用 dplyr::recode 手动执行此操作,但我无法让此重新编码与矢量一起使用。

dplyr::recode(a, "123-OldStyle" = "123 New Style")

vec_recode <- c("123-OldStyle" = "123 New Style", "123.Old Style" = "123 New Style", "(123) Old Style" = "123 New Style"))

我可以使用很长的 ifelse 来完成此操作,但我不想全部手动完成。

【问题讨论】:

    标签: r string


    【解决方案1】:

    我们可以在带有recode 的命名向量上使用!!! 将其转换为New Style

    dplyr::recode(a, !!! vec_recode)
    

    -输出

    #[1] "123 New Style" "123 New Style" "123 New Style"
    

    另外,在base R 中,我们可以只与[ 进行匹配,因为我们有一个命名向量

    unname(vec_recode[a])
    #[1] "123 New Style" "123 New Style" "123 New Style"
    

    【讨论】:

      【解决方案2】:

      你也可以这样清理字符串:

      #Code
      gsub('OldStyle','Old Style',gsub('[[:punct:] ]+',' ',a))
      

      输出:

      [1] "123 Old Style"  "123 Old Style"  " 123 Old Style"
      

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 1970-01-01
        • 2015-05-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 2020-06-29
        • 1970-01-01
        相关资源
        最近更新 更多