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

How would I expand a dataframe of variables to represent a network of interactions in R?

我有 table 个 'positive' 个家庭变量案例。我想最终使用 R 在 iGraph 中输出一个网络图。我想将每个家庭表示为一个网络,因此代表每个家庭中的积极和消极的人。我的输入数据框如下:

ID 结果 家庭 家庭人数
一个 积极 H1 2
B 积极 H1 2
C 积极 H2 3
D 积极 H3 2

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

ID 结果 家庭 家庭人数
一个 积极 H1 2
B 积极 H1 2
C 积极 H2 3
C1 否定 H2 2
D 积极 H3 3
D1 否定 H3 3
D2 否定 H3 3

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

ID 互动 家庭
一个 B H1
B 一个 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

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

我在 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