2017-09-11 164 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