0

假设我有以下数据框

df <- data.frame(dev = c("A","A","B","B","C","C","C"),
                  proj = c("W","X","Y","X","W","X","Z"))
types <- data.frame(proj = c("W","X","Y","Z"), 
                    type = c("blue","orange","orange","blue"))
> df
  dev proj
1   A    W
2   A    X
3   B    Y
4   B    X
5   C    W
6   C    X
7   C    Z
> types
  proj   type
1    W   blue
2    X orange
3    Y orange
4    Z   blue

我想把这些变成下面的网络

图形

节点是 中的唯一条目proj。对于节点u, v, 有一个弧 fromuvifu并且v共享一个元素 from dev。数据是每个开发人员从事的开发人员和项目的列表,我想形成一个网络,将具有共同开发人员的项目连接起来。每个项目都属于特定类型,并且该信息需要在图表中进行编码(我在这个玩具示例中通过颜色进行了此操作)。

从这张图中,我需要的是每个节点的度数,以及一个或多个中心性度量。特别是我需要每个节点的接近中心性,以及一个修改版本的接近中心性,它测量每种类型内的中​​心性。所以我的最终目标是获得这样的表格:

proj degree closeness_centrality type_centrality
   W      2                 0.75               1
   X      3                    1               1
   Y      2                 0.75               1
   Z      1                 0.60               1

作为参考,一个节点的接近中心度u定义为 C(u)=(N-1)/(所有节点v的距离 from uto v),其中 N 是图中的节点数和距离utov是最短路径的u长度v。类型中心性是 C(T, u)=|T- u|/( vT 中所有节点到 的距离的u总和v) 其中 T 是给定类型的所有节点的集合,|T- u| 是u排除的 T 的大小(因此 |T| 或 |T|-1 取决于 的类型u)。

最大的挑战之一是我的实际df有近 300,000 行,而该图将有大约 155,000 个顶点。不过平均学位会很低,所以我认为这是可行的。

我的问题是:

  1. R 是最好的工具吗?是否有用于在图表上执行这些类型的计算的好包?
  2. 存储此类数据的最佳方式是什么?我应该形成邻接矩阵还是其他?

任何见解或提示将不胜感激;作为一名经济学专业的学生,​​我在这里的计算机科学方面有点过头了。

谢谢!

4

0 回答 0