gpt4 book ai didi

r - 在 R 中创建一个指示共享唯一集群 ID 的列

转载 作者:行者123 更新时间:2023-12-05 01:50:33 26 4
gpt4 key购买 nike

我想创建一个列,如果 ID 和 PartnerID 包含相同的值但以任意组合形式提供唯一的 CoupleID,即不在同一列中。现有的问题和答案似乎只涉及值在同一列中重复的情况,即 Add ID column by group .任何帮助将不胜感激!

这是我的:

> tibble(df)
# A tibble: 6 × 2
ID PartnerID
1 2
2 1
3 4
4 3
5 6
6 5

这就是我想要的:

> tibble(df2)
# A tibble: 6 × 3
ID PartnerID CoupleID
1 2 1
2 1 1
3 4 2
4 3 2
5 6 3
6 5 3

数据

df <- data.frame (ID  = c("1", "2", "3", "4", "5", "6"),
PartnerID = c("2", "1", "4","3", "6", "5")
)

df2 <- data.frame (ID = c("1", "2", "3", "4", "5", "6"),
PartnerID = c("2", "1", "4","3", "6", "5"),
CoupleID = c("1", "1", "2", "2", "3", "3")
)

最佳答案

试试这个

library(dplyr)

df |> rowwise() |> mutate(g = paste0(sort(c_across(ID:PartnerID)) ,
collapse = "")) |> group_by(g) |> mutate(CoupleID = cur_group_id()) |>
ungroup() |> select(-g)
  • 输出
# A tibble: 6 × 3
ID PartnerID CoupleID
<chr> <chr> <int>
1 1 2 1
2 2 1 1
3 3 4 2
4 4 3 2
5 5 6 3
6 6 5 3

关于r - 在 R 中创建一个指示共享唯一集群 ID 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72987175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com