左连接仅使用merge()函数在R中选择的列

Sam*_*abé 49 merge r

我试图LEFT加入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
Run Code Online (Sandbox Code Playgroud)

我想离开连接数据集2(DF2):

Client  LO  CON
   A    12  CA
   B    11  US
   C    12  UK
   D    10  CA
   E    15  AUS
   F    91  DD
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码离开联接:

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
Run Code Online (Sandbox Code Playgroud)

但是,它合并了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      
Run Code Online (Sandbox Code Playgroud)

sta*_*kam 85

您可以通过将传递给合并的数据进行子集化来完成此操作:

merge(x = DF1, y = DF2[ , c("Client", "LO")], by = "Client", all.x=TRUE)
Run Code Online (Sandbox Code Playgroud)

或者您可以在当前合并后删除列:)

  • 记住你需要包含你要合并的变量 (2认同)

Ben*_*n G 15

我认为使用dplyr函数selectleft_join; 至少我更容易理解。连接函数 fromdplyr用于模拟 sql 参数。

 library(tidyverse)

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

 joined_data <- left_join(DF1, DF2, by = "Client")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您实际上不需要使用“by”参数,因为列具有相同的名称。

  • 是的,那是一个错字。我刚刚修好了。 (2认同)

Aks*_*dal 5

没什么优雅的,但这可能是另一个令人满意的答案。

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

这将非常有用,尤其是当您不需要用于连接结果中的表的键时。