我正在尝试根据某些级别和标签重新编码矢量值。重要的是,我可以用多种其他价值(标签)替换(级别),并且我事先并不知道我有多少价值。此外,两个级别可以具有相同的标签。
这是一个例子:我有一个向量" 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')
因为我事先并不知道价值和标签。
这样做应该很简单,但我找不到办法。
答案 0 :(得分:0)
感谢nicola。以下工作非常好。
a_labels[ match(a,a_levels) ]