2014-03-06 162 views
1

我有一個名爲患者數據框,看起來像這樣:如何基於某些條件合併兩個數據框?

ID ARR_DATETIME 
    1 2013-01-01 03:00:00 
    2 2013-05-12 01:00:00 
    3 2013-06-23 14:00:00 

我呼籲普查anothe rdataframe,它看起來像這樣:

DATETIME    COUNT 
    2013-01-01 01:00:00 4 
    2013-01-01 02:00:00 5 
    2013-01-01 03:00:00 9 
    ... 
    2013-05-12 01:00:00 8 
    ... 
    2013-06-23 14:00:00 6 

我想是添加另一列「COUNT」根據只有DATETIME與ARR_DATETIME相匹配的條件語句將其添加到我的PATIENTS數據框。

ID ARR_DATETIME   COUNT 
    1 2013-01-01 03:00:00 9 
    2 2013-05-12 01:00:00 8 
    3 2013-06-23 14:00:00 6 

我實現了一個嵌套for循環,但由於我的數據的大小,它幾乎需要永遠。

有什麼建議嗎?

+0

如果您可以添加一個具有預期輸出的可重複示例,以準確查看您想要的內容,這將非常有用 –

+0

感謝您的建議!我剛剛編輯它。 – user2350622

+0

嘿,這是更好的,因爲現在我們可以看到你想要的東西,但仍然不可重現。看看[這裏](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) –

回答

0

合併(患者普查,by.x = 「ARR_DATETIME」,by.y = 「DATETIME」)

但你必須確保ARR_DATETIME & DATETIME是字符的格式,而不是日期對象。

0

我相信你正在尋找使用合併功能。

CENSUS 
DATETIME   COUNT 
1/1/2013 4:00  9 
1/1/2013 5:00  8 
1/1/2013 6:00  3 
1/1/2013 7:00  7 

PATIENTS 
name  ARR_DATETIME 
Joe A.  1/1/2013 7:00 
Pat J.  1/1/2013 5:00 
Thomas L. 1/1/2013 6:00 

# EDIT :: I DID NOT PUT QUOTATIONS AROUND THE by.x & by.y arguments. 
# TRY THIS 
merge(PATIENTS, CENSUS, by.x = 'ARR_DATETIME', by.y = 'DATETIME') 
+0

我試過,但R給了我一個error.Error in sort.list(bx [m $ xi]):'x'必須是'sort.list'的原子。 您是否在列表中調用了'sort'? – user2350622

+0

這些結構都是data.frames嗎?如果你輸入'str(PATIENTS)'和'str(CENSUS)',是'CENSUS $ DATETIME'和'PATIENTS $ ARR_DATETIME'是同一類型的? – maloneypatr

+0

你剛纔發現了這個問題。我應該將ARR_DATETIME和DATETIME都轉換爲字符類型而不是日期。 – user2350622