我在R中有一个数据框。此数据框的一列取值从1到6。我有另一个数据框映射此列。有什么方法可以替换此列中的值,而无需使用循环(使用某些函数)?
[,1] [,2]
[1,] "1" "A"
[2,] "2" "B"
[3,] "3" "C"
[4,] "4" "D"
[1] 4 2 2 3 4 1 4 4
是否存在不使用循环就返回以下向量的函数?
[1] D B B C D A D D
最佳答案
你可以试试
v1 <- c(4, 2, 2, 3, 4, 1, 4, 4)
LETTERS[v1]
#[1] "D" "B" "B" "C" "D" "A" "D" "D"
假设您的映射数据集第二列不只是“LETTERS”
d1 <- data.frame(Col1=c(1,3,4,2), Col2=c('j1', 'c9', '19f', 'd18'),
stringsAsFactors=FALSE)
unname(setNames(d1[,2], d1[,1])[as.character(v1)])
#[1] "19f" "d18" "d18" "c9" "19f" "j1" "19f" "19f"
或者
d1$Col2[match(v1, d1$Col1)]
#[1] "19f" "d18" "d18" "c9" "19f" "j1" "19f" "19f"
关于r - 如何通过R中的字典映射列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28751879/