我不知道我是否在錯誤地搜索問題,因為它很難解釋,但到目前為止我還沒有在網上找到任何答案!基本上我有兩個資料幀,DF1 有 120 行,DF2 有 22000 行。它們都有一個“查找”列,基于其他三個列的值。它們看起來像這樣(一個子集):
DF1:
| 抬頭 |
|---|
| EM1PRI |
| EM1PRI |
| EM2PRI |
| EM3PRI |
| EM3PRI |
DF2:
| 抬頭 | ID |
|---|---|
| EM1PRI | 14567 |
| EM1PRI | 12345 |
| EM1PRI | 13456 |
| EM1PRI | 15678 |
| EM2PRI | 16789 |
| WM1PRI | 17890 |
我想從 DF2 獲取每個可用匹配項的 ID 到 DF1 中的查找列,回圈遍歷而不替換,因此每個 ID 都是唯一的。如果沒有可用的,那么它需要是 NA。這就是我希望輸出的外觀:
DF3:
| 抬頭 | ID |
|---|---|
| EM1PRI | 14567 |
| EM1PRI | 12345 |
| EM2PRI | 16789 |
| EM3PRI | 不適用 |
| EM3PRI | 不適用 |
我不知道這是回圈還是匹配或合并,還是三者兼而有之。非常感謝您的任何建議!
uj5u.com熱心網友回復:
一種方法是對Lookup兩個 data.frames 中的每個值都使用行號,然后連接Lookup值和行號。
library(dplyr)
df1 %>%
group_by(Lookup) %>%
mutate(rn = row_number()) %>%
left_join(df2 %>%
group_by(Lookup) %>%
mutate(rn = row_number())) %>%
dplyr::select(-rn)
輸出
Lookup ID
<chr> <dbl>
1 EM1PRI 14567
2 EM1PRI 12345
3 EM2PRI 16789
4 EM3PRI NA
5 EM3PRI NA
資料
df1 <- structure(list(Lookup = c("EM1PRI", "EM1PRI", "EM2PRI", "EM3PRI",
"EM3PRI")), class = "data.frame", row.names = c(NA, -5L))
df2 <- structure(list(Lookup = c("EM1PRI", "EM1PRI", "EM1PRI", "EM1PRI",
"EM2PRI", "WM1PRI"), ID = c(14567, 12345, 13456, 15678, 16789,
17890)), class = "data.frame", row.names = c(NA, -6L))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346616.html
