问题描述
我有一个友谊提名数据集。我试图首先获得每个人的自我网络,然后将三合会普查中每种类型的三合会的数量作为自我的变量。以下是目前为止的一些示例数据和代码:
有数据:
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()