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

标签 r

假设我有:

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/

相关文章:

r - rgdal "gdal-config"配置错误

string - 如何在 R 中绘制格式化为字符串的函数

R:选择包含给定数量 NA 的行

r - 按组计算列中的正负值

r - Shiny 的隔离与 react

r - 为什么 RMarkdown 无法正确转义第二个 LaTeX 表?

r - 在 R 包中添加引用信息

arrays - 两个字符串数组的R语言跨乘积组合

r - 抓取页面源中不存在的数据表

r - 在 R 中创建类似 SAS 的库