给定一个数据库

> dat
     x   y
[1,] "A" "alpha"
[2,] "B" "beta"
[3,] "C" "gamma"

它定义了d[,2]中数据的标签(在d[,1]中指定),我想将标签应用于向量
z
[1] "A" "A" "A" "B" "B" "C" "C" "C"

到达数据库
     z
[1,] "A" "alpha"
[2,] "A" "alpha"
[3,] "A" "alpha"
[4,] "B" "beta"
[5,] "B" "beta"
[6,] "C" "gamma"
[7,] "C" "gamma"
[8,] "C" "gamma"

不幸的是,我的数据库相当大:有没有一种快速的方法可以做到这一点,在r中使用内置函数?
编辑问题的修改版本。
给定数据库(“规则”或“标签”)
> dat
     x   y
[1,] 1 "alpha"
[2,] 2 "beta"
[3,] 3 "gamma"

我想将y中新列(第三列)中的标签应用到数据库
> q
     z
[1,] 1 0.1
[2,] 2 0.2
[3,] 3 0.3
[4,] 3 0.4
[5,] 2 0.5
[6,] 1 0.6
[7,] 1 0.7
[8,] 2 0.8

根据q[,1]中的值,即z

最佳答案

这应该符合您的要求:

dat <- as.matrix(data.frame(x=LETTERS[1:3],y=c("alpha","beta","gamma")))
z <- c("A","A","A","B","B","C","C","C")

rownames(dat) <- dat$x
dat[z,]

  x   y
A "A" "alpha"
A "A" "alpha"
A "A" "alpha"
B "B" "beta"
B "B" "beta"
C "C" "gamma"
C "C" "gamma"
C "C" "gamma"

10-02 09:33
查看更多