我在 R 中有一個與此類似的問題:
將熊貓資料框與關鍵重復項合并
在 R 中做到這一點應該不難,但我只是找不到解決方案。
非常感謝您的幫助!
uj5u.com熱心網友回復:
通過'key'在每個資料中創建一個序列列,然后執行 full_join
library(dplyr)
library(data.table)
df1 %>%
mutate(rn = rowid(key)) %>%
full_join(df2 %>%
mutate(rn = rowid(key))) %>%
select(-rn)
-輸出
key A B
1 K0 A0 B0
2 K1 A1 B1
3 K2 A2 B2
4 K2 A3 B3
5 K2 A4 <NA>
6 K3 A5 B4
7 K3 <NA> B5
8 K4 <NA> B6
資料
df1 <- structure(list(key = c("K0", "K1", "K2", "K2", "K2", "K3"), A = c("A0",
"A1", "A2", "A3", "A4", "A5")), class = "data.frame",
row.names = c("0",
"1", "2", "3", "4", "5"))
df2 <- structure(list(key = c("K0", "K1", "K2", "K2", "K3", "K3", "K4"
), B = c("B0", "B1", "B2", "B3", "B4", "B5", "B6")),
class = "data.frame", row.names = c("0",
"1", "2", "3", "4", "5", "6"))
uj5u.com熱心網友回復:
akrun 的回答很棒(另見評論):我又學到了一些新東西:
最重要的是使用rowid{data.table}which 是一個方便的函式,用于在每個組內生成唯一的行 ID。
將dplyr唯一的解決方案將需要為這兩個步驟:
library(dplyr)
df1 %>%
group_by(key) %>%
mutate(id = row_number()) %>%
full_join(df2 %>%
group_by(key) %>%
mutate(id=row_number())) %>%
select(-id)
key A B
<chr> <chr> <chr>
1 K0 A0 B0
2 K1 A1 B1
3 K2 A2 B2
4 K2 A3 B3
5 K2 A4 NA
6 K3 A5 B4
7 K3 NA B5
8 K4 NA B6
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/324634.html
