2017-09-11 165 views
0

两个表我有这样一个数据帧:合并具有相同的id

df1: 
    X1 X2 X3 
1 1 4 7 
2 2 5 8 
3 3 6 9 

class(df1[1,"X1"]) 

[1] “字符”

现在我有这样另一个数据帧:

df2: 
    id name 
1  1  A 
2  2  C 
3  3  B 
4  4  Z 
5  5  X 
6  6  G 
7  7  E 
8  8  Y 
9  9  H 

此处的编号是数字

df1中的每个字符与df2中的编号相同。 这是我需要的结果:

X1 X2 X3 
1 A Z E 
2 C X Y 
3 B G H 

我知道,你可以合并两个表使用相同的密钥,但在这种情况下,我对DF1关键是在表中的数据。

回答

2

我们可以使用match这个

df1[] <- lapply(df1, function(x) df2$name[match(x, df2$id)]) 
df1 
# X1 X2 X3 
#1 A Z E 
#2 C X Y 
#3 B G H 
+0

它完美,谢谢:)虽然我不是太熟悉lapply功能 – Ching

+0

@Ching这仅仅是一个相似'for'循环,唯一的区别是我们对它有更多的控制。这在某些情况下是有利的 – akrun