我有矢量
a <- c(2, 1, 1, 2)
我想用另一个唯一值替换每个唯一值。例如,我想要 2 -> 'a' 和 1 -> 'b' 创建一个具有相同顺序的向量,如下所示:
c <- c('a', 'b', 'b', 'a')
我试过这样的事情,但没有奏效:
replace(a, a %in% unique(a), b)
我想避免手动转到所有唯一值以在 a 很大的情况下进行概括。替换字符串只是示例。该解决方案还应该推广到完全不同的字符串或值。例如:2 -> 'Walter' 和 1 -> 'Getrude'。
在这里进行的一种方法是定义两个数据帧,一个用于起始值,另一个用于要映射的值:
library(plyr)
df1 <- data.frame(a=c(2, 1, 1, 2))
df2 <- data.frame(a=c(1, 2), value=c('a', 'b'), stringsAsFactors=FALSE)
result <- join(df1, df2)$value
result
[1] "b" "a" "a" "b"
拥有用于映射值的专用数据框或表可能是一个很好的长期策略。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句