【问题标题】:identify reverse order combinations [duplicate]识别逆序组合[重复]
【发布时间】:2019-03-07 14:46:19
【问题描述】:

我的数据如下所示:

  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 变量。我难住了。感谢任何帮助。

【问题讨论】:

    标签: r


    【解决方案1】:

    一个选项是

    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"))
    

    【讨论】:

    • 完美!谢谢你,阿克伦!
    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2015-09-28
    相关资源
    最近更新 更多