这样的第一个数据框,具有很少的列:
名称 | C1 | C2 | C3 | .... |
---|---|---|---|---|
一个 | 2 | 3 | 5 | ..... |
b | 4 | 5 | 6 | .... |
C | 6 | 2 | 3 | .... |
第二个数据框是这样的:
ID | C_名称 |
---|---|
2 | 苹果 |
3 | 香蕉 |
4 | 橙子 |
5 | 葡萄 |
6 | 奇异果 |
我想用第二个数据框中的名称替换第一个数据框中的数字,它应该看起来像这样
名称 | C1 | C2 | C3 | .... |
---|---|---|---|---|
一个 | 苹果 | 香蕉 | 葡萄 | ..... |
b | 橙子 | 葡萄 | 奇异果 | .... |
C | 奇异果 | 苹果 | 香蕉 | .... |
谢谢
dat2vec <- setNames(dat2$C_name, dat2$id)
dat1[2:4] <- lapply(dat1[2:4], function(z) dat2vec[as.character(z)])
dat1
# name C1 C2 C3 ....
# 1 a apple banana grape .....
# 2 b orange grape kiwi ....
# 3 c kiwi apple banana ....
要么
dat1[2:4] <- lapply(dat1[2:4], function(z) {
ind <- match(z, dat2$id)
replace(z, !is.na(ind), dat2$C_name[ind])
})
数据
dat1 <- structure(list(name = c("a", "b", "c"), C1 = c("apple", "orange", "kiwi"), C2 = c("banana", "grape", "apple"), C3 = c("grape", "kiwi", "banana"), .... = c(".....", "....", "....")), row.names = c(NA, -3L), class = "data.frame")
dat2 <- structure(list(id = 2:6, C_name = c("apple", "banana", "orange", "grape", "kiwi")), class = "data.frame", row.names = c(NA, -5L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句