[R] Need help on creating Adjacency matrix in R
arun
smartpink111 at yahoo.com
Fri Jun 14 15:44:22 CEST 2013
HI,
May be this helps:
dat1<- read.table(text="
Col1 Col2 Weight
A D 0.1
B C 0.4
C M 0.6
D P 0.8
E W 1
F D 1.2
G C 3.1
H M 4
",sep="",header=TRUE,stringsAsFactors=FALSE)
vec1<- c(unique(dat1[,1]),unique(dat1[,2]))
datNew<- expand.grid(vec1,vec1)
colnames(datNew)<- colnames(dat1)[-3]
library(plyr)
dat2<-join(datNew,dat1,type="left")
dat2$Weight[is.na(dat2$Weight)]<-0
m1<-xtabs(Weight~Col1+Col2,data=dat2)
library(igraph)
g <- graph.adjacency(m1, mode="directed", weighted=TRUE, diag=TRUE)
get.adjacency(g)
#11 x 11 sparse Matrix of class "dgCMatrix"
# [[ suppressing 11 column names ‘A’, ‘B’, ‘C’ ... ]]
#
#A . . . 1 . . . . . . .
#B . . 1 . . . . . . . .
#C . . . . . . . . 1 . .
#D . . . . . . . . . 1 .
#E . . . . . . . . . . 1
#F . . . 1 . . . . . . .
#G . . 1 . . . . . . . .
#H . . . . . . . . 1 . .
#M . . . . . . . . . . .
#P . . . . . . . . . . .
#W . . . . . . . . . . .
#or
library(reshape2)
m2<-dcast(dat2,Col1~Col2,value.var="Weight",fill=0)
row.names(m2)<- m2[,1]
m2<- as.matrix(m2[,-1])
g1 <- graph.adjacency(m2, mode="directed", weighted=TRUE, diag=TRUE)
get.adjacency(g1)
#11 x 11 sparse Matrix of class "dgCMatrix"
# [[ suppressing 11 column names ‘A’, ‘B’, ‘C’ ... ]]
#
#A . . . 1 . . . . . . .
#B . . 1 . . . . . . . .
#C . . . . . . . . 1 . .
#D . . . . . . . . . 1 .
#E . . . . . . . . . . 1
#F . . . 1 . . . . . . .
#G . . 1 . . . . . . . .
#H . . . . . . . . 1 . .
#M . . . . . . . . . . .
#P . . . . . . . . . . .
#W . . . . . . . . . . .
A.K.
----- Original Message -----
From: rn27in . <rn27in at gmail.com>
To: r-help at r-project.org
Cc:
Sent: Friday, June 14, 2013 2:43 AM
Subject: [R] Need help on creating Adjacency matrix in R
Hello everyone
I am relatively new to R and wanted some help on creating adjacency matrix
I have a dataset as given below and wanted to create an adjacency matrix in
R. For creating an adjacency matrix, the matrix should be a square matrix.
I tried creating a matrix directly, but it would not be a square matrix.
Can any one help me out with this problem.
Thanks
Rohit
Col 1 Col 2 Weight A D 0.1 B C 0.4 C M 0.6 D P 0.8 E W 1 F D 1.2
G C 3.1 H M 4
[[alternative HTML version deleted]]
______________________________________________
R-help at 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.
More information about the R-help
mailing list