在数据框中创建可用配对的矩阵

时间:2016-03-20 08:39:27

标签: r

我有一个如下所示的数据框games

             P1         P2
1      Johannes       Paul
2      Johannes       Falk
3          Paul       Falk
4          Paul        Kai
.           ...        ...

......依此类推,每一行都与两位玩家的游戏相匹配。 现在我想要一个表格或矩阵来显示已经发生的游戏,有点像这样:

          Johannes  Paul  Falk    Kai
Johannes     FALSE  TRUE  TRUE  FALSE
Paul          TRUE FALSE  TRUE   TRUE
Falk          TRUE  TRUE FALSE  FALSE
Kai          FALSE  TRUE FALSE  FALSE

我提出的最好的是table(games$P1.Spieler, games$P2.Spieler),但这并不能完成这项工作。

2 个答案:

答案 0 :(得分:1)

我们可以melt数据集为'long'格式,transform指定factor的{​​{1}}'值',获取levels并执行table。然后,我们加倍否定将0转换为FALSE,将所有其他值转换为TRUE。

crossprod

答案 1 :(得分:1)

您还可以使用igraph包:

将data.frame加载到无向igraph中

library(igraph)
g <- as.undirected(graph.data.frame(df))

通过简单的函数调用获取邻接矩阵:

> get.adjacency(g, sparse = F)
         Johannes Paul Falk Kai
Johannes        0    1    1   0
Paul            1    0    1   1
Falk            1    1    0   0
Kai             0    1    0   0

你甚至可以绘制它:

Plot of network