我将如何扩展变量数据框以表示 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
我有 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