2013-07-10 133 views
0

我有一個看起來像這樣的金融數據的大數據幀:合併數據幀中的R

id  Tradedate name   hour open close 
19897 2013-01-30 instrument1 1 18.01 13.50 
19898 2013-01-30 instrument2 2 15.72 8.99 
19899 2013-01-30 instrument3 3 12.80 11.42 
19900 2013-01-30 instrument4 4 12.71 12.85 

有一對夫婦一千儀器在上面的數據幀。我有十幾個工具,看起來像這樣的另一個「被交易」的數據幀:

id name hour 
1 instrument3 17  
2 instrument4 24  
3 instrument5 15  
4 instrument6 19 

我遇到的問題是,我不能讓subset返回其中僅包含一個數據幀「待交易」向量中的工具小時組合。我試過這個:subset(financial_data, subset= paste(name, hour) %in% paste(to_be_traded$name, portfolio$hour)),但它返回完整的財務數據框。我知道這可以通過類似於INNER JOIN的sql來完成,但我不知道如何在R中執行此操作。任何和所有幫助都非常感謝。

回答

2

R中的INNER JOINs用merge完成。有一個在你的數據匹配的兩列的唯一組合沒有重疊,但如果有的話,他們將與交付:

merge(dat1, dat2, by=c("name", "hour")) 

如果你想外連接(左或右),他們可以通過指定交付在merge調用中all.x或all.y。

+0

工程就像一個魅力。 – user1067257

0

一個簡單的merge(financial_data, trade_data)在這種情況下完成工作。

+0

我不這麼認爲。 'id'列將在數據框名稱之間進行匹配,這不屬於規範的一部分。 –

+0

好點。我沒有看到'id'變量。您必須指定列。 –