Igraph:为自我网络创建三元组人口普查数据集
Igraph: create dataset of triad census for ego networks
我有一个友谊提名数据集。我试图首先获取每个人的自我网络,然后将黑社会人口普查中每种类型的黑社会的数量作为自我的变量。到目前为止,这是一些示例数据和代码:
有数据:
df<-read.table(text="student_id alter
1 3
2 5
2 2
2 3
3 2
3 4
3 5
4 1
4 6
4 3
5 1
5 6
5 2
6 5
6 2
6 1
7 8
8 9
9 8
9 7
10 7
10 9
11 19
11 15
11 12
12 20
12 19
12 11
13 15
13 19
13 11
14 16
14 12
14 18
15 17
15 20
15 17
16 14
16 19
16 20
16 13
17 20
17 18
17 13
17 14
18 13
18 19
18 17
19 17
19 16
19 11
20 13
20 17
20 11
20 1", header = TRUE)
想要数据:
student_id triad_003 triad_012 triad_102 triad_021D triad_021U triad_021C triad_111D triad_111U triad_030T triad_030C triad_201 triad_120D triad_120U triad_120C triad_210 triad_300
1 2 2 2 0 4 2 2 2 1 1 0 0 1 1 0 0
2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0
3 0 1 1 0 1 0 1 2 0 1 1 0 0 1 1 0
4 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0
5 0 0 0 1 0 1 3 1 0 1 0 0 1 0 2 0
6 0 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0
7 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0
8 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
9 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0
10 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
11 0 3 0 2 2 2 2 2 2 2 0 1 0 1 1 0
12 1 1 1 1 0 2 2 0 0 0 0 0 0 1 1 0
13 3 8 4 1 5 8 6 5 4 4 2 2 2 2 0 0
14 2 0 2 1 0 1 1 2 0 0 0 0 0 1 0 0
15 0 0 0 0 0 2 0 1 2 3 0 1 1 0 0 0
16 1 2 0 0 0 1 0 3 1 0 1 0 0 1 0 0
17 2 10 0 2 2 6 2 1 1 3 1 1 2 2 0 0
18 0 1 0 1 0 3 0 0 1 1 0 0 1 2 0 0
19 4 3 6 0 4 4 4 2 1 1 1 1 1 2 1 0
20 11 9 6 2 4 9 3 3 3 3 0 1 1 1 0 0
到目前为止,我已经在下面完成了这项工作,这为我提供了每个三元组的计数。但我正在努力获取上面我想要的数据集:
egonet_list <- graph_from_data_frame(df, directed = TRUE) %>%
make_ego_graph(., order = 1, mode = "out")
triads <- lapply(egonet_list, triad.census)
这并不优雅,但它似乎有效!
g <- graph_from_data_frame(df, directed = TRUE)
egonet_list <- make_ego_graph(g)
triads <- lapply(egonet_list, triad_census_full) %>% as.data.frame() %>%
`colnames<-`(names(V(g))) %>% t() %>% as.data.frame()
我有一个友谊提名数据集。我试图首先获取每个人的自我网络,然后将黑社会人口普查中每种类型的黑社会的数量作为自我的变量。到目前为止,这是一些示例数据和代码:
有数据:
df<-read.table(text="student_id alter
1 3
2 5
2 2
2 3
3 2
3 4
3 5
4 1
4 6
4 3
5 1
5 6
5 2
6 5
6 2
6 1
7 8
8 9
9 8
9 7
10 7
10 9
11 19
11 15
11 12
12 20
12 19
12 11
13 15
13 19
13 11
14 16
14 12
14 18
15 17
15 20
15 17
16 14
16 19
16 20
16 13
17 20
17 18
17 13
17 14
18 13
18 19
18 17
19 17
19 16
19 11
20 13
20 17
20 11
20 1", header = TRUE)
想要数据:
student_id triad_003 triad_012 triad_102 triad_021D triad_021U triad_021C triad_111D triad_111U triad_030T triad_030C triad_201 triad_120D triad_120U triad_120C triad_210 triad_300
1 2 2 2 0 4 2 2 2 1 1 0 0 1 1 0 0
2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0
3 0 1 1 0 1 0 1 2 0 1 1 0 0 1 1 0
4 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0
5 0 0 0 1 0 1 3 1 0 1 0 0 1 0 2 0
6 0 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0
7 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0
8 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
9 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0
10 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
11 0 3 0 2 2 2 2 2 2 2 0 1 0 1 1 0
12 1 1 1 1 0 2 2 0 0 0 0 0 0 1 1 0
13 3 8 4 1 5 8 6 5 4 4 2 2 2 2 0 0
14 2 0 2 1 0 1 1 2 0 0 0 0 0 1 0 0
15 0 0 0 0 0 2 0 1 2 3 0 1 1 0 0 0
16 1 2 0 0 0 1 0 3 1 0 1 0 0 1 0 0
17 2 10 0 2 2 6 2 1 1 3 1 1 2 2 0 0
18 0 1 0 1 0 3 0 0 1 1 0 0 1 2 0 0
19 4 3 6 0 4 4 4 2 1 1 1 1 1 2 1 0
20 11 9 6 2 4 9 3 3 3 3 0 1 1 1 0 0
到目前为止,我已经在下面完成了这项工作,这为我提供了每个三元组的计数。但我正在努力获取上面我想要的数据集:
egonet_list <- graph_from_data_frame(df, directed = TRUE) %>%
make_ego_graph(., order = 1, mode = "out")
triads <- lapply(egonet_list, triad.census)
这并不优雅,但它似乎有效!
g <- graph_from_data_frame(df, directed = TRUE)
egonet_list <- make_ego_graph(g)
triads <- lapply(egonet_list, triad_census_full) %>% as.data.frame() %>%
`colnames<-`(names(V(g))) %>% t() %>% as.data.frame()