Find all sequences with the same column value

后端 未结 9 909
误落风尘
误落风尘 2020-12-17 18:35

I have the following data frame:

╔══════╦═════════╗
║ Code ║ Airline ║
╠══════╬═════════╣
║    1 ║ AF      ║
║    1 ║ KL      ║
║    8 ║ AR      ║
║    8 ║ A         


        
9条回答
  •  粉色の甜心
    2020-12-17 19:15

    I think all you would need is a table

    dat <- structure(list(Code = c(1L, 1L, 8L, 8L, 8L),Airline = structure(c(1L, 5L, 2L, 3L, 4L),.Label = c("AF", "AR", "AZ", "DL", "KL"),class = "factor")),.Names = c("Code", "Airline"),class = "data.frame", row.names = c(NA, -5L))
    
    tbl <- crossprod(table(dat))
    diag(tbl) <- 0
    
    #        Airline
    # Airline AF AR AZ DL KL
    #      AF  0  0  0  0  1
    #      AR  0  0  1  1  0
    #      AZ  0  1  0  1  0
    #      DL  0  1  1  0  0
    #      KL  1  0  0  0  0
    
    dd <- data.frame(Airline = colnames(tbl),
                     shared = apply(tbl, 1, function(x)
                       paste(names(x)[x > 0], collapse = ', ')))
    
    merge(dat, dd)
    #   Airline Code shared
    # 1      AF    1     KL
    # 2      AR    8 AZ, DL
    # 3      AZ    8 AR, DL
    # 4      DL    8 AR, AZ
    # 5      KL    1     AF
    

提交回复
热议问题