簡體   English   中英

R dplyr:我如何使用 left_join 只保留第一個匹配項?

[英]R dplyr: how do I use left_join keeping only the first match?

我有兩個表我想用 left_join 加入。

table_joined <- left_join(table_x,table_y, by = type)

問題是每個類型都有多個條目,因此 table_x 中的 table_y 有多個匹配項。 這使得生成的 table_joined 具有比 table_x 更多的行,以適應所有多個匹配項。 有什么辦法可以只保留第一個匹配項,使得 table_joined 的行數與 table_x 相同?

我正在連接到服務器上的 SQL 表,所以如果可能的話,我很想繼續使用 dplyr。 謝謝!

以下是我的表格示例。

表_x

x1 類型
1 一個
2
3 C

table_y

類型 y1
一個 AA
一個 AA
BB
BB
C 抄送

加入表:

x1 類型 y1
1 一個 AA
1 一個 AA
2 BB
2 BB
3 C 抄送

所需的輸出:

x1 類型 y1
1 一個 AA
2 BB
3 C 抄送

您所描述的不是 SQL 連接的工作方式。

如果您確實希望每種類型只有一行,則需要確保連接中使用的每個表每種type只有一行。

您可以使用distinct來刪除 table_y 上的重復項,但它要求行完全匹配。 如果他們不這樣做,您需要弄清楚您自己保留哪一行的邏輯。

table_joined <- left_join(table_x, distinct(table_y), by = type)

暫無
暫無

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

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