假设我有以下数据框
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
, 有一个弧 fromu
到v
ifu
并且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 u
to v
),其中 N 是图中的节点数和距离u
tov
是最短路径的u
长度v
。类型中心性是 C(T, u
)=|T- u
|/( v
T 中所有节点到 的距离的u
总和v
) 其中 T 是给定类型的所有节点的集合,|T- u
| 是u
排除的 T 的大小(因此 |T| 或 |T|-1 取决于 的类型u
)。
最大的挑战之一是我的实际df
有近 300,000 行,而该图将有大约 155,000 个顶点。不过平均学位会很低,所以我认为这是可行的。
我的问题是:
- R 是最好的工具吗?是否有用于在图表上执行这些类型的计算的好包?
- 存储此类数据的最佳方式是什么?我应该形成邻接矩阵还是其他?
任何见解或提示将不胜感激;作为一名经济学专业的学生,我在这里的计算机科学方面有点过头了。
谢谢!