gpt4 book ai didi

r - 有没有一种方法可以将两个在 R 中互换的变量分组

转载 作者:行者123 更新时间:2023-12-04 10:58:52 26 4
gpt4 key购买 nike

假设我有:

df<-data.frame(ID=c(102, 102, 167,143,143,148,148 ),
ID2=c(167, 167, 102,148,148,143,143 ),
group=c(1,1,1,2,2,2,2))


ID ID2 group
1 102 167 1
2 102 167 1
3 167 102 1
4 143 148 2
5 143 148 2
6 148 143 2
7 148 143 2

通常我可以使用 add_group_indices 按 ID 和 ID2 进行分组,但在这种情况下,我想按其中的值进行分组(即 102 始终附加到 167,反之亦然),与 143 和 148 相同。我想确定通过该 group 变量进行这些分组。

最佳答案

我们可以根据pmin/pmax 创建两个新变量来获取group_indices

library(dplyr)
df %>%
mutate(ID_new = pmin(ID, ID2), ID2_new = pmax(ID, ID2)) %>%
mutate(group = group_indices(., ID_new, ID2_new)) %>%
select(-ends_with('new'))
# ID ID2 group
#1 102 167 1
#2 102 167 1
#3 167 102 1
#4 143 148 2
#5 143 148 2
#6 148 143 2
#7 148 143 2

dplyrdevel版本中,我们可以在创建组后使用cur_group_id

library(stringr)
df %>%
group_by(grp = str_c(pmin(ID, ID2), pmax(ID, ID2))) %>%
mutate(group = cur_group_id()) %>%
ungroup %>%
select(-grp)

关于r - 有没有一种方法可以将两个在 R 中互换的变量分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60661716/

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