Another approach (not as elegant as JoFrhwld's)
df<- read.table(textConnection(" Var1 Var2 value AB 0.5 AC 0.75 BD 0.2 "),header = T) lev = unique(c(levels(df$Var1),levels(df$Var2))) A = matrix(rep(0,length(lev)^2),nrow=length(lev)) colnames(A) = lev rownames(A) = lev apply(df,1,function(x) A[x[1],x[2]]<<-as.numeric(x[3])) > A ABCD A 0 0.5 0.75 0.0 B 0 0.0 0.00 0.2 C 0 0.0 0.00 0.0 D 0 0.0 0.00 0.0 >
George dontas
source share