Or here with apply()
#CREATE THE DATA df<-data.frame(matrix(data=round(x=rnorm(100,10,1),digits=3),nrow=10), row.names=c("A","B","C","D","E","F","G","H","I","J")) colnames(df)<-c("AD","BD","CD","DD","ED","FD","GD","HD","ID","JD") #RUN THROUGH THE DF mins<-apply(df,2,function(x)return(array(which.min(x)))) mins<-data.frame(col=names(mins),row=mins) df$mins<-apply(mins,1,FUN=function(x)return(paste(x["col"], rownames(df[as.numeric(x["row"]),]), df[as.numeric(x["row"]),x["col"]], sep="/"))) > df AD BD CD DD ED FD GD HD ID JD mins A 9.292 11.568 10.489 9.512 7.755 8.545 9.989 9.660 9.240 9.913 AD/G/8.477 B 11.972 11.297 9.221 10.936 8.665 9.154 10.620 8.335 11.149 11.382 BD/F/7.588 C 9.910 9.762 11.744 8.938 11.283 8.750 8.719 10.929 9.158 10.168 CD/G/8.481 D 9.986 8.776 9.922 9.016 10.691 10.667 9.876 11.417 10.391 10.823 DD/C/8.938 E 8.877 9.672 9.024 10.424 9.033 8.709 10.176 9.937 10.891 9.779 ED/A/7.755 F 8.656 7.588 10.071 9.549 8.654 7.965 11.693 9.019 8.665 8.971 FD/F/7.965 G 8.477 9.686 8.481 10.925 11.034 12.021 10.642 11.087 10.398 9.989 GD/C/8.719 H 9.578 11.660 10.864 9.801 9.188 11.006 11.282 10.139 9.888 8.775 HD/B/8.335 I 11.361 10.131 10.502 11.195 11.802 10.817 10.141 9.614 10.676 7.404 ID/F/8.665 J 11.754 11.096 9.645 10.496 11.772 9.336 8.887 11.124 9.211 11.169 JD/I/7.404
source share