从两个匹配列

时间:2018-03-22 17:20:02

标签: r match subset data-manipulation

我有一个数据框:

a <- c(1,2,3,4,5,6)

b <- c(1,2,1,2,1,4)

c <- c("A", "B", "C", "D", "E", "F")

df <- data.frame(a,b,c)

我想要做的是创建另一个向量d,其中包含c行中a的值,该值与b的每个值匹配

所以我的新矢量看起来像这样:

d <- c("A", "B", "A", "B", "A", "D")

例如,b的最终值为4,与a的第4行匹配,因此d的值为第4行c"D"

2 个答案:

答案 0 :(得分:8)

如果 a b 都是具有整数值的列表,则可以直接使用它们。

d <- c[b[a]]
d
[1] "A" "B" "A" "B" "A" "D"

如果 a c 的常规整数序列,您只需从 b 中调用 c

c[b]
[1] "A" "B" "A" "B" "A" "D"

答案 1 :(得分:0)

另一种选择是转换为因子并将其用作:

factor(a, labels = c)[b]
#[1] A B A B A D

as.character(factor(a, labels = c)[b])
#[1] "A" "B" "A" "B" "A" "D"

数据

a <- c(1,2,3,4,5,6)

b <- c(1,2,1,2,1,4)

c <- c("A", "B", "C", "D", "E", "F")