使用dplyr构建社会网络分析(SNA)交互计数矩阵
原始数据
| ID | Observation # |
|---|---|
| Tom | 1 |
| Sam | 1 |
| Joe | 2 |
| Tom | 2 |
| Sam | 2 |
| Sam | 3 |
| Phil | 3 |
| Tom | 4 |
| Phil | 4 |
| Sam | 4 |
问题解答
当然可以创建这样的交互次数矩阵,核心是统计每对ID共同出现在同一个Observation #中的次数,步骤如下:
- 按
Observation #分组,提取每个分组内的所有ID,比如Observation#1包含Tom、Sam,Observation#2包含Joe、Tom、Sam等; - 遍历所有分组,对每组内的ID两两配对,每出现一次配对就给对应计数加1;
- 以所有唯一ID作为行和列,填充对应的共现次数(矩阵为对称矩阵,A与B的共现次数等于B与A的)。
最终交互次数矩阵
| Joe | Tom | Sam | Phil | |
|---|---|---|---|---|
| Joe | 0 | 1 | 1 | 0 |
| Tom | 1 | 0 | 3 | 1 |
| Sam | 1 | 3 | 0 | 2 |
| Phil | 0 | 1 | 2 | 0 |
数值说明
- Joe仅和Tom、Sam在Observation#2中共现,所以对应交叉值为1,和Phil无共现,值为0;
- Tom和Sam在Observation#1、2、4中共现3次,和Phil在Observation#4中共现1次;
- Sam和Phil在Observation#3、4中共现2次,和Tom共现3次;
- Phil仅和Tom、Sam有共现,对应数值分别为1和2。
内容的提问来源于stack exchange,提问作者Noah Calkins
相关产品推荐
相关产品推荐

