2014-03-31 75 views
3

我有兩個數據幀R中合併保持數據的所有行集

distinct_paper_year_data:

author_id  distinct_paper_year_count 
    1       3 
    2       1 
    4       1 
    5       4 

author_data:

author_id paper_id confirmed 
    1   25733   1 
    2   47276   1 
    3   79468   1 
    4   12856   0 

現在我想合併,這樣所需的輸出看起來像:

author_id paper_id  confirmed distinct_paper_year_count 
1   25733   1    3 
2   47276   1    1 
3   79468   1    0 
4   12856   0    4 

在此我需要表author_data中存在的author_id處於最終輸出中。由於在distinct_paper_year_count中沒有author_id==3的數據,因此distinct_paper_year_count列的值在最終結果中應爲零(對於author_id==3)。

通過使用合併我越來越

merge(distinct_paper_year_data,author_data,by="author_id") 

author_id distinct_paper_year_count paper_id confirmed 
    1       3  25733   1 
    2       1  47276   1 
    4       1  12856   0 

怎麼能期望的輸出來實現?

回答

5

你需要一個外部聯接:

merge(distinct_paper_year_data,author_data,by="author_id", all=T) 

注意:您將獲得NA對於其中的表不匹配的那些行,就像在{3,5} AUTHOR_ID。也就是說,如果需要,您可以簡單地修改NA。您還可以使用all.xall.y進行左外或右外連接。

最後檢查出data.table更快的連接(和更多功能)

+0

我只需要author_data – user3171906

+0

@ user3171906的行... OK。然後使用'all.y = T' – Michele

相關問題