From: Messing, Solomon O. <SOLOMON.O.MESSING_at_saic.com>

Date: Tue, 13 May 2008 17:53:44 -0400

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. Received on Tue 13 May 2008 - 23:46:25 GMT

Date: Tue, 13 May 2008 17:53:44 -0400

Hanneman, Robert A. and Mark Riddle. 2005. Introduction to social network methods. Riverside, CA: University of California, Riverside ( published in digital form at http://faculty.ucr.edu/~hanneman/ )

I found the following:

"Two-mode data are sometimes stored in a second way, called the "bipartite" matrix. A bipartite matrix is formed by adding the rows as additional columns, and columns as additional rows."

Did I need to convert my data frame to a bipartite matrix before applying the two.to.one function?

Solomon

>-----Original Message-----

*>From: Gabor Csardi [mailto:csardi_at_rmki.kfki.hu]
**>Sent: Saturday, May 10, 2008 1:09 PM
**>To: Messing, Solomon O.
**>Cc: r-help_at_r-project.org
**>Subject: Re: [R] For Social Network Analysis-Graph Analysis - How to
*

convert 2

*>mode data to 1 mode data?
**>
*

>Solomon, if i understand two-mode networks properly (they're bipartite,

*>right?),
**>then this is not hard to do with igraph. Basically, for each vertex
*

create an

>order=2 neighborhood, and then create a graph from the adjacency list,

*>it is something like this:
**>
**>two.to.one <- function(g, keep) {
**> neis <- neighborhood(g, order=2)
**> neis <- lapply(seq(neis), function(x) neis[[x]][ neis[[x]] != x-1])
*

## drop

>self-loops

*> neis <- lapply(neis, function(x) x[ x %in% keep ])
*

## keep

>only these

*> neis <- lapply(seq(neis), function(x) t(cbind(x-1, neis[[x]])))
*

## create

>edge lists

*> neis[-keep-1] <- NULL
*

## these

>are not needed

*> neis <- matrix(unlist(neis), byrow=TRUE, nc=2)
*

## a

>single edge list

*> neis <- neis[ neis[,1] > neis[,2], ]
*

## count

>an edge once only

*> mode(neis) <- "character"
**> g2 <- graph.edgelist(neis, dir=FALSE)
**> V(g2)$id <- V(g2)$name
*

## 'id'

>is used in Pajek

*> g2
**>}
**>
**>It does not check that the graph is indeed two-mode, and it keeps the
**>vertices given in the 'keep' argument. 'keep' is made of igraph vertex
*

ids.

>You can use it like this:

*>
**>g <- graph.ring(10)
**>keep <- seq(0,8,by=2) ## we keep the 'even' vertices
**>
**>g2 <- two.to.one(g, keep)
**>write.graph(two.to.one(g, keep), format="pajek", file="/tmp/a.net")
**>
**>I haven't tested it much. We'll have a better function in the next
*

igraph

*>version.
*

>Gabor

*>
**>On Fri, May 09, 2008 at 03:37:05PM -0400, Messing, Solomon O. wrote:
**>> Hi,
**>>
**>>
**>>
**>> Does anyone know of a package in R that has a function to convert
**>> network data (e.g. an adjacency matrix or ) from 2-mode to 1-mode? I
*

am

>> conducting social network analysis. I know that Pajek has this

function

>> under Net --> Transform --> 2-mode to 1-mode --> Rows. I have

searched

>> the documentation under packages 'sna', 'network', 'igraph', and

*>> 'dynamicgraph' but I was not able to identify a comparable function.
**>>
**>>
**>>
**>> I would just export my data to Pajek and import it to R, but I'm
*

going

>> to have to generate hundreds of these graphs, so it would take quite

a

>> bit of time to do it this way.

*>>
**>>
**>>
**>> Thanks,
**>>
**>>
**>>
**>> Solomon
**>>
**>>
**>>
**>>
**>> [[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.
**>
**>--
*

>Csardi Gabor <csardi@rmki.kfki.hu> UNIL DGM

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. Received on Tue 13 May 2008 - 23:46:25 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Wed 14 May 2008 - 12:30:37 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*