使用二分矩阵将边列表转换为关联矩阵

时间:2017-07-01 13:48:58

标签: r matrix graph bipartite edge-list

我有一个像这样的边缘列表

a   1
b   2
c   3
a   2
b   1

我希望建立它的关联矩阵,如:

    a   b   c   d
1   1   1   0   0
2   1   1   0   0
3   0   0   1   0
4   0   0   0   0

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用factor并再添加一个lvl

    df=read.table(text='A B
               a   1
               b   2
               c   3
               a   2
               b   1',header=T)

    levels(df$A)=c(levels(df$A),'d')
    df$B=as.factor(df$B)
    levels(df$B)=c(levels(df$B),'4')
    subset=table(df$B,df$A)

> subset

    a   b   c   d
1   1   1   0   0
2   1   1   0   0
3   0   0   1   0
4   0   0   0   0

答案 1 :(得分:0)

df<-cbind(df,1)

require(qdapTools)
incidence<-df[rep(seq_len(nrow(df)), df[,'1']), c('A', 'B')] %>%
{split(.[,'B'], .[,'A'])} %>%
  mtabulate()