R, , .
df <- data.frame(ID=letters[1:4], AN=c("white", "black", "purple", "white"),
AW=c("green", "yellow", "gray", "gray"),
Group=rep(c(1,2),each=2), stringsAsFactors=FALSE)
dfList <- split(df[, c("ID", "Group")], df$Group)
groupPairs <- combn(unique(df$Group), 2)
( sapply) . data.frame, expand.grid. ( [[]]) , dfList groupPairs[1,i] groupPairs[2,i].
myComparisonList <- sapply(1:ncol(groupPairs), function(i) {
expand.grid(dfList[[groupPairs[1,i]]]$ID,
dfList[[groupPairs[2,i]]]$ID,
stringsAsFactors=F)
})
idsMat <- sapply(myComparisonList, rbind)
dfDone <- cbind(df[match(idsMat[,1], df$ID), ], df[match(idsMat[,2], df$ID), ])
names(dfDone) <- paste0(names(dfDone), rep(c(".1", ".2"),
each=length(names(df))))