【问题标题】:R: match and replace string. mgsub does not workR:匹配和替换字符串。 mgsub 不起作用
【发布时间】:2015-01-27 06:14:28
【问题描述】:

我有两个数据框。第一个数据框 lib 是一个包含两列单词的库。第二个数据框 data1 应转换如下: data1$V1 列与 lib$V2 匹配的字符串应替换为字符串在 lib$V1 列的相应行中。

lib <- data.frame(
  v1 = c("car", "great", "huge", "car", "great", "huge"),
  v2 = c("cars", "awesome", "tall", "truck", "super", "very huge")
  )



data1 <- data.frame(
  values = c("cars", "awesome", "tall", "truck", "super", "very huge")
)

最终的数据框 data1.final 应该如下所示:

data1.final <- data.frame(
  values = c("car", "great", "huge", "car", "great", "huge")
)

我用 qdap 包中的 mgsub 函数尝试了这个:

data1$values <- mgsub(as.character(lib$V2), lib$V1, data1$values, fixed=T)

但一切都没有改变。有什么想法吗?

【问题讨论】:

    标签: r string replace match qdap


    【解决方案1】:

    mgsub 用于字符串中的文本替换。你所追求的是字典查找。 qdapTools 包中的lookup (%l%) 是解决此问题的众多方法之一:

    library(qdapTools)
    data1$values <- data1$values %lc% lib[, 2:1]
    
    ##   values
    ## 1    car
    ## 2  great
    ## 3   huge
    ## 4    car
    ## 5  great
    

    请注意,%lc%(代表查找字符)强制输出字符。

    要使用 mgsub 完成此操作,您会使用:

    mgsub(as.character(lib$v2), as.character(lib$v1), data1$values)
    

    但这不是这种情况的最佳方法。

    【讨论】:

      【解决方案2】:
      data1.final<- data.frame(values=lib$v1[match(data1$values,lib$v2)])
      
      > data1.final
        values
      1    car
      2  great
      3   huge
      4    car
      5  great
      6   huge
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-26
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 2020-08-27
        • 2016-08-27
        • 1970-01-01
        相关资源
        最近更新 更多