如果我有一個像這樣名為 df 的資料框..
____________________
| id | name | age |
|____________________|
| 0123 | Joe | 20 |
|____________________|
| 0123 | Kyle | 45 |
|____________________|
| 0333 | Susan | 24 |
|____________________|
| 0333 | Molly | 80 |
|____________________|
如何將此 df 分成兩部分,以便 df 沒有任何重復的 id 值。因此,我正在尋找他們像這樣......
____________________
| id | name | age |
|____________________|
| 0123 | Joe | 20 |
|____________________|
| 0333 | Susan | 24 |
|____________________|
____________________
| id | name | age |
|____________________|
| 0333 | Molly | 80 |
|____________________|
| 0123 | Kyle | 45 |
|____________________|
讓我知道您是否可以提供幫助!
uj5u.com熱心網友回復:
您可以split
在 ID 的序列上使用一個因子:
split(df,~ave(id, id, FUN = seq_along))
$`1`
id name age
1 0123 Joe 20
3 0333 Susan 24
$`2`
id name age
2 0123 Kyle 45
4 0333 Molly 80
這與您有多少副本無關。所有重復項都將屬于一個唯一的資料框:
split(rbind(df, df),~ave(id, id, FUN = seq_along))
$`1`
id name age
1 0123 Joe 20
3 0333 Susan 24
$`2`
id name age
2 0123 Kyle 45
4 0333 Molly 80
$`3`
id name age
5 0123 Joe 20
7 0333 Susan 24
$`4`
id name age
6 0123 Kyle 45
8 0333 Molly 80
uj5u.com熱心網友回復:
a_list <- split(df, duplicated(df$id))
這僅在每個id
最多出現兩次時才有效。
uj5u.com熱心網友回復:
這是一個 dplyr 解決方案:
df1 <- df %>%
distinct(id, .keep_all = TRUE)
df2 <- anti_join(df, df1)
> df1
id name age
1 123 Joe 20
2 333 Susan 24
> df2
id name age
1 123 Kyle 45
2 333 Molly 80
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/489599.html