R:匹配并替换字符串。 mgsub不起作用

时间:2014-11-28 14:50:32

标签: r string replace match qdap

我有两个数据框。第一个数据框 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)

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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)

但对于这种情况,这不是最佳方法。