Hi, May be this helps: dat1 <- read.table(text=" data data freq 1 2 2 1 3 1 1 4 1 2 3 2 2 4 1 2 2 1 3 4 2",sep="",header=TRUE) val<- unique(c(dat1[,1],dat1[,2])) dat2 <-expand.grid(data=val,data.1=val) library(plyr) library(reshape2) res <- dcast(join(dat2,dat1),data~data.1,value.var="freq",fill=0) row.names(res) <- res[,1] res1 <- as.matrix(res[,-1]) diag(res1) <-0
#or m1 <- matrix(0,length(val),length(val),dimnames=list(val,val)) indx1 <- outer(colnames(m1),rownames(m1),paste,sep="") indx2 <- paste0(dat1[,1],dat1[,2]) m1[match(indx2,indx1)] <- dat1[,3] diag(m1) <- 0 m1 # 1 2 3 4 #1 0 2 1 1 #2 0 0 2 1 #3 0 0 0 2 #4 0 0 0 0 A.K. Hello , I am working on a project , i need to create an upper triangular matrix from the data in this form; data data freq 1 2 2 1 3 1 1 4 1 2 3 2 2 4 1 2 2 1 3 4 2 to a triangular matrix in the following form : 1 2 3 4 1 0 2 1 1 2 0 0 2 1 3 0 0 0 2 4 0 0 0 0 i am new to R please help ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.