簡體   English   中英

left_join實際如何工作? (在R; dplyr中)

[英]How does left_join really work? (in R; dplyr)

我有一個包含郵政編碼和相應城市的數據集。 在某些情況下,郵政編碼丟失了,所以我想用R中的郵政編碼庫中的郵政編碼替換它。

顯然,“紐約”有多個郵政編碼。 在我的交易數據集中,同一居民出現多次,因此他們的城市(例如“紐約”)也出現多次。

使用dplyr的left_join函數,結合城市名稱,我得到城市名稱“ New York”的相應郵政編碼,如下所示:

10001, 
10002, 
10003, 
etc.

將此與vlookup進行比較,Excel始終會進行第一個可能的查找匹配,在這種情況下為10001。

根據這里的邏輯,R將“紐約”與每行的不同郵政編碼匹配嗎?

左聯接將始終獲取左表中的所有條目,並添加右表中的匹配項:

在此處輸入圖片說明

我認為下面的圖像清楚地顯示了邏輯,您可以忽略那里的SQL語句。

如果您left_join doctorsvisits ,我們將以左表為起點,並添加右表中的所有匹配項。 在這種情況下,具有doctor_id 212的Doctor在表visits具有兩個匹配項,因此這兩個vistis都被添加到了結果表中。

在此處輸入圖片說明

因此,Excel所做的不是左聯接。 它僅查找單個參考值,而忽略其余參考值。

如果要從Excel復制行為,則可以通過刪除聯接列中的所有重復項來首先過濾訪問表。 例如:

visits = data.frame(doctor_id=c('a','b','c','a'),time=c(1,2,3,4))
visits = visits[!duplicated(visits$doctor_id),]

然后使用該表進行左聯接。 希望這可以幫助!

左聯接實際上將“ x”小詞與“ y”小詞合並,從而保留x的所有條目,但僅聯接在x中具有匹配項的y條目(通過特定變量)。

你可以在下面看到

dataframe "x"

     rank                        title
    <chr>                        <chr>
 1 2,801.                        Lines
 2 2,802.              Nocno zivljenje
 3 2,803.                 Saber Google
 4 2,804.                   Sacred Vow
 5 2,805. Was hat uns bloß so ruiniert
 6 2,806.                     Our Time
 7 2,807.                     Orecchie
 8 2,808.            Marshrut postroen
 9 2,809.             Shor Se Shuruaat
10 2,810.   Oru Murai Vanthu Paarthaya


dataframe "y"

    rank                 genre
1 2,801.                 Drama
2 2,802. Crime, Drama, Mystery
3 2,803.                Comedy
4 2,804.                 Drama
5 2,805.                Comedy
6 2,806.                 Drama

在應用left_join之后

left_join(x,y, by ="rank")

"     rank                        title                 genre
    <chr>                        <chr>                 <chr>
 1 2,801.                        Lines                 Drama
 2 2,802.              Nocno zivljenje Crime, Drama, Mystery
 3 2,803.                 Saber Google                Comedy
 4 2,804.                   Sacred Vow                  <NA>
 5 2,805. Was hat uns bloß so ruiniert                  <NA>
 6 2,806.                     Our Time                  <NA>
 7 2,807.                     Orecchie                  <NA>
 8 2,808.            Marshrut postroen                  <NA>
 9 2,809.             Shor Se Shuruaat                  <NA>
10 2,810.   Oru Murai Vanthu Paarthaya                  <NA>"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM