将向量中多个值的每个实例替换为唯一值专用的值

时间:2019-04-23 10:48:14

标签: r

我有矢量

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->“沃尔特”和1->“ Getrude”。

2 个答案:

答案 0 :(得分:2)

我们可以使用>> y = make_fake_y(10,5) >> y array([0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0]) >> idx = find_half_the_zeros(y) >> idx array([14, 3, 6, 11, 12]) >> np.delete(y,idx) array([0, 0, 1, 1, 1, 0, 0, 0, 1, 1]) 获取一个数字索引,然后根据它进行替换(使用match

base R

答案 1 :(得分:1)

一种进行此操作的方法是定义两个数据帧,一个用于起始值,另一个用于要映射的值:

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"

拥有专用的数据框或表来映射值可能是一个不错的长期策略。