1

我有两个数据框。第一个数据框是一个包含两列单词的库。第二个数据框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)

但一切都没有改变。有任何想法吗?

4

2 回答 2

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
于 2014-11-28T14:59:27.233 回答
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)

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

于 2014-11-28T16:07:48.600 回答