天天看點

《資料科學:R語言實作》——3.8 合并資料

本節書摘來自華章計算機《資料科學:r語言實作》一書中的第3章,第3.8節,作者 丘祐玮(david chiu),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

資料合并讓我們了解不同資料源是如何互相關聯的。r中的merge操作與資料庫中的join操作類似,它使用兩個資料集中相同的值來連接配接兩個資料集。

按照3.3節“轉換資料類型”教程,把導入資料的每個屬性轉換成合适的資料類型。同時按照3.2節“重命名資料變量”中的步驟,命名employees和salaries資料集的列名。

執行下列步驟,合并salaries和employees。

1.因為salaries和employees都有emp_no,我們可以使用emp_no作為連接配接鍵合并兩個資料集:

《資料科學:R語言實作》——3.8 合并資料

2.我們可以給舍棄的屬性指定null值:

《資料科學:R語言實作》——3.8 合并資料

3.除了使用函數merge,我們可以安裝加載plyr程式包來操作資料:

《資料科學:R語言實作》——3.8 合并資料

4.我們可以使用plyr中的函數join來合并資料:

《資料科學:R語言實作》——3.8 合并資料

與資料庫中的資料表類似,我們有時候也需要合并兩個資料集,進而進行資料關聯。在r中,我們隻需要使用函數merge合并相同列值下的兩個資料框。

在函數merge中,我們使用salaries和employees作為輸入資料框。對于by參數,我們指定emp_no作為鍵合并這兩個表。然後,我們看到在emp_no上取值相同的資料合并到了一個新的資料框中。但是,有時我們希望執行左連接配接或者右連接配接,以達到保留employees或salaries所有資料值的目的。要執行左連接配接,我們設定all.x為true。然後我們發現employees所有行都在合并結果中保留了下來。相反,如果我們希望保留salaries的所有行,我們可以設定all.y為true。

除了使用内置的merge函數,我們可以安裝加載plyr程式包來合并資料集。join的用法與merge類似,我們隻需要指定要合并的資料以及by參數中相同值所在的列。

在plyr程式包中,我們可以使用函數join_all,在一個清單中遞歸地連接配接資料集。這裡,我們可以使用join_all按照emp_no合并employees和salaries資料集:

《資料科學:R語言實作》——3.8 合并資料