[英]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.