微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我将如何扩展变量数据框以表示 R 中的交互网络?

如何解决我将如何扩展变量数据框以表示 R 中的交互网络?

我有一个家庭变量的“阳性”案例表。我想最终使用 R 在 iGraph 中输出一个网络图。我想将每个家庭表示为一个网络,因此代表每个家庭中的正负值。我的输入数据框如下:

ID 结果 家庭 家庭人数
A 正面 H1 2
B 正面 H1 2
C 正面 H2 3
D 正面 H3 2

我的第一个要求是将列表扩展到家庭中的变量数量,结果为:

ID 结果 家庭 家庭人数
A 正面 H1 2
B 正面 H1 2
C 正面 H2 3
C1 否定 H2 2
D 正面 H3 3
D1 否定 H3 3
D2 否定 H3 3

从这一点来看,我需要一个表示网络边缘列表的数据框,即,如果一个人与其家庭代表的另一个人有交互(双向)。这看起来像:

ID 互动 家庭
A B H1
B A H1
C C1 H2
C1 C H2
D D1 H3
D D2 H3
D1 D H3
D1 D2 H3
D2 D H3
D2 D1 H3

这个边缘列表将与正面和负面结果的“属性”列表一起输入,然后可用于构建网络。我只是在努力以正确的格式获取数据才能开始!

我在 R 和堆栈溢出方面有点菜鸟 - 我希望以上内容有意义并且很高兴澄清!

解决方法

我认为您不需要 igraph 来实现您的目标。下面是一个 data.table 选项

> setDT(df)[,CJ(ID,Interaction = ID),Household][ID != Interaction,c(2,3,1)]       
    ID Interaction Household
 1:  A           B        H1
 2:  B           A        H1
 3:  C          C1        H2
 4: C1           C        H2
 5:  D          D1        H3
 6:  D          D2        H3
 7: D1           D        H3
 8: D1          D2        H3
 9: D2           D        H3
10: D2          D1        H3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。