我有矢量
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”。
答案 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"
拥有专用的数据框或表来映射值可能是一个不错的长期策略。