簡體   English   中英

使用 merge() function 左連接 R 中的選定列

[英]Left join only selected columns in R with the merge() function

我正在嘗試 LEFT Join 2 數據框,但我不想加入第二個數據集中的所有變量:

例如,我有數據集 1 (DF1):

  Cl    Q   Sales  Date
   A    2   30     01/01/2014
   A    3   24     02/01/2014
   A    1   10     03/01/2014
   B    4   10     01/01/2014
   B    1   20     02/01/2014
   B    3   30     03/01/2014

我想離開加入數據集 2 (DF2):

Client  LO  CON
   A    12  CA
   B    11  US
   C    12  UK
   D    10  CA
   E    15  AUS
   F    91  DD

我可以使用以下代碼加入:

merge(x = DF1, y = DF2, by = "Client", all.x=TRUE):

   Client Q    Sales   Date             LO      CON
   A      2    30      01/01/2014       12      CA
   A      3    24      02/01/2014       12      CA
   A      1    10      03/01/2014       12      CA
   B      4    10      01/01/2014       11      US
   B      1    20      02/01/2014       11      US
   B      3    30      03/01/2014       11      US

但是,它合並了 LO 和 CON 列。 我只想合並 LO 列。

   Client Q    Sales   Date             LO      
   A      2    30      01/01/2014       12      
   A      3    24      02/01/2014       12      
   A      1    10      03/01/2014       12      
   B      4    10      01/01/2014       11      
   B      1    20      02/01/2014       11     
   B      3    30      03/01/2014       11      

您可以通過對傳遞到合並中的數據進行子集化來做到這一點:

merge(x = DF1, y = DF2[ , c("Client", "LO")], by = "Client", all.x=TRUE)

或者您可以在當前合並后簡單地刪除該列:)

我認為使用dplyr函數selectleft_join更簡單left_join 至少我更容易理解。 來自dplyr的 join 函數用於模擬 sql 參數。

 library(tidyverse)

 DF2 <- DF2 %>%
   select(client, LO)

 joined_data <- left_join(DF1, DF2, by = "Client")

在這種情況下,您實際上不需要使用“by”參數,因為列具有相同的名稱。

沒什么優雅的,但這可能是另一個令人滿意的答案。

merge(x = DF1, y = DF2, by = "Client", all.x=TRUE)[,c("Client","LO","CON")]

這將非常有用,尤其是當您不需要用於連接結果中的表的鍵時。

對於兩個表中的客戶列:

DF_joined <- DF1 %>% left_join(DF2 %>% select(Client,CON))

使用替代溶液left_join()select()dplyr封裝,無中間步驟:

DF1 <- DF1 %>%
  left_join(DF2, by = "Client") %>%
  select(-CON)

dplyr<\/code>

DF_joined <- left_join(DF1, select(DF2, -CON), by = "Client")

暫無
暫無

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

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