# read in the table, rename rows x <- unique(read.csv("testData.csv")) row.names(x) <- 1:dim(x)[1] # get a unique table of just Drug and Phase newx <- unique(data.frame(Drug=x$Drug, Phase=x$Phase) row.names(newx) <- 1:dim(newx)[1] for (i in 1:dim(newx)[1]) { d <- which(x$Drug == newx$Drug[i]) p <- which(x$Phase == newx$Phase[i]) ind <- intersect(d, p) result <- list() for (j in ind) { result <- append(result, as.character(x$Disease[j])) } result$sep <- "," newx$Disease[i] = do.call(paste, result) }