I have the following data frame:
╔══════╦═════════╗
║ Code ║ Airline ║
╠══════╬═════════╣
║ 1 ║ AF ║
║ 1 ║ KL ║
║ 8 ║ AR ║
║ 8 ║ A
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