2013-12-19 55 views
1

我有兩個data.frames:,必須與另一data.frame所有列data.frame的一列

DF1 
Col1  Col2  ......  ...... Col2000 
A   H  
c   d 
d   e 
n   b 
e   A  
b   n  
H   c  

DF2  
A 
b   
c  
d  
e   
n  
H  

我需要簡單地在DF2唯一一列相匹配DF1中的每一列。我需要匹配他們,因爲我需要確切地知道比賽的排名。無論如何,我試着寫一個函數,但因爲我不是的R專家的東西在我的代碼出錯:

lapply(DF1, function(x) match(DF1[,i], DF2[,1]))  

誰能幫我寫正確,我需要的功能?

在此先感謝

最佳

F.

+1

'sapply(DF1,函數(x)的總和(X == DF2 [1]))' –

+0

@ SimonO101不返回的排名。 –

+0

@Joris最多隻能說這個問題措辭不清。如果它是我認爲的那樣(即大多數匹配的列排在第一位),那麼將前者包含在rank()中就足夠了。 –

回答

2

爲了得到正確的結果,你需要一個正確的命令:

lapply(DF1, function(x) match(x, DF2[,1]))  

做你想要做什麼。取:

DF1 <- data.frame(
    Col1 = c('A','c','d','n','e','b','H'), 
    Col2 = c('H','d','e','b','A','n','c') 
) 
DF2 <- data.frame(c('A','b','c','d','e','n','H')) 

然後:

> lapply(DF1, function(x) match(x, DF2[,1])) 
$Col1 
[1] 1 3 4 6 5 2 7 

$Col2 
[1] 7 4 5 2 1 6 3 
+0

+1用於讀心術。 –

+0

嘿嘿,我把它稱爲代碼閱讀;-) –

+0

謝謝你Joris。 – Fuv8

相關問題