我们来举个例子。我有两个矩阵:
带名字的矩阵:
> dput(a)
structure(c("Greg", "Martin", "Hunge", "Rek", "Pred", "Singa",
"Kreton", "Wita", "Marcus", "Sebas", "Theo", "Rox", "Plate",
"Tret"), .Dim = c(7L, 2L))
矩阵与数据:
> dput(b)
structure(c("Greg", "Hunge", "Pred", "12", "54", "11", "33",
"44", "55", "61", "23", "68", "34", "123", "43", "22", "112",
"35", "79", "22", "19"), .Dim = c(3L, 7L))
我想根据矩阵a
更改数据矩阵(第一列)中的名称。所以,输出应该是这样的:
> dput(c)
structure(c("Wita", "Sebas", "Rox", "12", "54", "11", "33",
"44", "55", "61", "23", "68", "34", "123", "43", "22", "112",
"35", "79", "22", "19"), .Dim = c(3L, 7L))
最简单的方法是什么?请记住,a
中的名字多于我需要的名称。功能需要找到每一行的正确名称。
答案 0 :(得分:2)
您可以使用match()
:
a <- structure(c("Greg", "Martin", "Hunge", "Rek", "Pred", "Singa",
"Kreton", "Wita", "Marcus", "Sebas", "Theo", "Rox", "Plate",
"Tret"), .Dim = c(7L, 2L))
b <- structure(c("Greg", "Hunge", "Pred", "12", "54", "11", "33",
"44", "55", "61", "23", "68", "34", "123", "43", "22", "112",
"35", "79", "22", "19"), .Dim = c(3L, 7L))
# copy
c <- b
c[ ,1] <- a[match(b[ ,1], a[ ,1]), 2]
c
# [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#[1,] "Wita" "12" "33" "61" "34" "22" "79"
#[2,] "Sebas" "54" "44" "23" "123" "112" "22"
#[3,] "Rox" "11" "55" "68" "43" "35" "19"
答案 1 :(得分:0)
我希望这对你有用......
d=merge(b,a,by.x=1,by.y=1)
c=as.matrix(d)
c=c[,-1]
c=c[,c(7,1:6)]
colnames(c)=NULL