Dear R community, is there an easy way to convert an adjacency list (or a data-frame) to a non-symmetric matrix? The adjacency list has the following form: person group 1 Sam a 2 Sam b 3 Sam c 4 Greg a 5 Tom b 6 Tom c 7 Tom d 8 Mary b 9 Mary d I need the data in a matrix with persons as rows and groups as columns: a b c d Sam 1 1 1 0 Greg 1 0 0 0 Tom 0 1 1 1 Mary 0 1 0 1 I know that there are several possibilities in some of the network packages to convert adjacency lists to symmetric or sparse matrices, but I couldn't find a way to coerce them into affiliation matrices. kind regards Sebastian -- PD Dr. Sebastian Haunss SfB 597 - Transformations of the State Universit?t Bremen Linzer Str. 9a 28359 Bremen T: +49-(0)421-218-56654 http://shaunss.ipgovernance.eu/ Recently published: Haunss, Sebastian (2012), ?Gewalt und Gewaltlosigkeit in sozialen Bewegungen?, Forschungsjournal Soziale Bewegungen 25(4): 6?16. Leifeld, Philip, and Sebastian Haunss (2012), ?Political Discourse Networks and the Conflict over Software Patents in Europe?, European Journal of Political Research 51(3): 382?409.
For converting from first dataset to second, library(reshape2) #dat1 is data dcast(dat1,person~group,value.var="group",length) # ?person a b c d #1 ? Greg 1 0 0 0 #2 ? Mary 0 1 0 1 #3 ? ?Sam 1 1 1 0 #4 ? ?Tom 0 1 1 1 A.K. ----- Original Message ----- From: Sebastian Haunss <sebastian.haunss at uni-bremen.de> To: r-help at r-project.org Cc: Sent: Tuesday, February 5, 2013 4:07 AM Subject: [R] adjacency list to non-symmetric matrix Dear R community, is there an easy way to convert an adjacency list (or a data-frame) to a non-symmetric matrix? The adjacency list has the following form: person group 1 Sam a 2 Sam b 3 Sam c 4 Greg a 5 Tom b 6 Tom c 7 Tom d 8 Mary b 9 Mary d I need the data in a matrix with persons as rows and groups as columns: a b c d Sam 1 1 1 0 Greg 1 0 0 0 Tom 0 1 1 1 Mary 0 1 0 1 I know that there are several possibilities in some of the network packages to convert adjacency lists to symmetric or sparse matrices, but I couldn't find a way to coerce them into affiliation matrices. kind regards Sebastian -- PD Dr. Sebastian Haunss SfB 597 - Transformations of the State Universit?t Bremen Linzer Str. 9a 28359 Bremen T: +49-(0)421-218-56654 http://shaunss.ipgovernance.eu/ Recently published: Haunss, Sebastian (2012), ?Gewalt und Gewaltlosigkeit in sozialen Bewegungen?, Forschungsjournal Soziale Bewegungen 25(4): 6?16. Leifeld, Philip, and Sebastian Haunss (2012), ?Political Discourse Networks and the Conflict over Software Patents in Europe?, European Journal of Political Research 51(3): 382?409. ______________________________________________ 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.
Try table():
> adj <- table(d) # 'd' is your data.frame
> adj
group
person a b c d
Greg 1 0 0 0
Mary 0 1 0 1
Sam 1 1 1 0
Tom 0 1 1 1
If you have duplicate rows in the d then it will
tally them up. You can can convert positives to
1's with adj[adj>0] <- 1.
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at
r-project.org] On Behalf
> Of Sebastian Haunss
> Sent: Tuesday, February 05, 2013 1:07 AM
> To: r-help at r-project.org
> Subject: [R] adjacency list to non-symmetric matrix
>
> Dear R community,
>
> is there an easy way to convert an adjacency list (or a data-frame) to a
non-symmetric
> matrix?
>
> The adjacency list has the following form:
>
> person group
> 1 Sam a
> 2 Sam b
> 3 Sam c
> 4 Greg a
> 5 Tom b
> 6 Tom c
> 7 Tom d
> 8 Mary b
> 9 Mary d
>
> I need the data in a matrix with persons as rows and groups as columns:
>
> a b c d
> Sam 1 1 1 0
> Greg 1 0 0 0
> Tom 0 1 1 1
> Mary 0 1 0 1
>
> I know that there are several possibilities in some of the network packages
to convert
> adjacency lists to symmetric or sparse matrices, but I couldn't find a
way to coerce them
> into affiliation matrices.
>
>
> kind regards
> Sebastian
>
> --
>
> PD Dr. Sebastian Haunss
> SfB 597 - Transformations of the State
> Universit?t Bremen
> Linzer Str. 9a
> 28359 Bremen
> T: +49-(0)421-218-56654
> http://shaunss.ipgovernance.eu/
>
> Recently published:
> Haunss, Sebastian (2012), ?Gewalt und Gewaltlosigkeit in sozialen
Bewegungen?,
> Forschungsjournal Soziale Bewegungen 25(4): 6?16.
> Leifeld, Philip, and Sebastian Haunss (2012), ?Political Discourse Networks
and the
> Conflict over Software Patents in Europe?, European Journal of Political
Research 51(3):
> 382?409.
>
> ______________________________________________
> 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.