基于具有相同标签和多个值的两个矢量(级别和标签)重新编码值以替换

时间:2018-03-20 15:32:59

标签: r r-factor

我正在尝试根据某些级别和标签重新编码矢量值。重要的是,我可以用多种其他价值(标签)替换(级别),并且我事先并不知道我有多少价值。此外,两个级别可以具有相同的标签。

这是一个例子:我有一个向量" a"。我想重新编码" a_levels"中的每个值。通过" a_labels"中的相应标签。

a = c(5,6,5,5,7,8,7)
a_levels = c(5, 6, 7, 8)
a_labels = c('a', 'a', 'c', 'd')

我可以假设a_levels的第一个值对应于a_labels的第一个值等。)

所以我想得到

[1] "a" "a" "a" "a" "c" "d" "c"

重要的是,我有一些限制,不允许我应用这样的公共解决方案:

1)注意a_labels包含标签" a",两次,所以我不能使用

factor(a, levels = a_levels,
       labels = a_labels)

2)在我的数据中,我有很多值得替换,我甚至都不知道 提前我需要用哪些标签替换哪些标签。 我只得到两个向量a_levels和a_labels 由于这些原因,我不能使用几个ifelse()语句或dplyr中的recode函数。

recode(a, 
       '5' = 'a',
       '6' = 'a',
       '7' = 'c',
       '8' = 'd')

因为我事先并不知道价值和标签。

这样做应该很简单,但我找不到办法。

1 个答案:

答案 0 :(得分:0)

感谢nicola。以下工作非常好。

a_labels[ match(a,a_levels) ]