如何将数据从R数据帧转换为网络

时间:2013-10-27 06:50:39

标签: r graph social-networking

假设我有以下数据框

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

我想将这些转变为以下网络

Graph

节点是proj中的唯一条目。对于节点uv,如果uv共享u中的元素,则会有vdev的弧线}。数据是每个开发人员所使用的开发人员和项目的列表,我想形成一个连接有共同开发人员的项目的网络。每个项目都是特定类型,并且该信息需要在图表中编码(我在此玩具示例中通过颜色进行了此操作)。

从这张图中我需要的是每个节点的程度,以及centrality的一个或多个度量。特别是我需要每个节点的closeness centrality,以及测量每种类型中心性的亲密度中心性的修改版本。所以我的最终目标是获得这样一个表:

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距离的所有节点u的总和到v),其中N是图表中节点的数量,从uv的距离是最短u - v的长度-路径。类型中心性是C(T,u)= | T - u | /(从v到{{1的距离T中的所有节点u的总和其中T是给定类型的所有节点的集合,并且| T - v |是u排除的T的大小(因此| T |或| T | -1取决于u的类型)。

其中一个重大挑战是我的实际u有近300,000行,此图表将有大约155,000个顶点。平均程度虽然很低,但我认为这是可行的。

我的问题是:

  1. R是最好的工具吗?在图表上执行这些类型的计算有没有很好的包?
  2. 存储此类数据的最佳方法是什么?我应该形成一个邻接矩阵,还是其他什么?
  3. 任何见解或提示都会得到很好的赞赏;作为一名经济学专业的学生,​​我在这里有点明智。

    谢谢!

0 个答案:

没有答案