我有两个数据框。第一个数据框 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)
但一切都没有改变。有什么想法吗?
答案 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)
但对于这种情况,这不是最佳方法。