我有如下数据:
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变量。我很沮丧感谢任何帮助。
答案 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"))