识别逆序组合

时间:2019-03-07 14:46:20

标签: r

我有如下数据:

  X Y  TOTAL PAIR
1 A B     1   AB
2 B A     2   BA
3 C D     3   CD
4 D C     4   DC
5 E F     5   EF

我想添加一个变量PAIR_ID,以任何组合形式捕获相同的ID。因此顺序无关紧要。它应该看起来像这样:

  X Y  TOTAL PAIR  PAIR_ID
1 A B     1   AB       1
2 B A     2   BA       1
3 C D     3   CD       2
4 D C     4   DC       2
5 E F     5   EF       3

目标是获得一个具有每对总数的df。像这样:

    PAIR_ID   PAIR_TOTAL
1       1          3
2       2          7
3       3          5

我的问题是如何获取该PAIR_ID变量。我很沮丧感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

一个选项是

library(dplyr)
out <- df1 %>% 
         mutate(PAIR_ID = group_indices(., pmax(X, Y), grp2 = pmin(X,Y)) )

out %>% 
    group_by(PAIR_ID) %>%
    summarise(PAIR_TOTAL = sum(TOTAL))
# A tibble: 3 x 2
#  PAIR_ID PAIR_TOTAL
#    <int>      <int>
#1       1          3
#2       2          7
#3       3          5

数据

df1 <- structure(list(X = c("A", "B", "C", "D", "E"), Y = c("B", "A", 
"D", "C", "F"), TOTAL = 1:5, PAIR = c("AB", "BA", "CD", "DC", 
"EF")), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5"))