【发布时间】:2020-03-21 07:27:20
【问题描述】:
我有一个大约 80 所学校的网络数据集(节点是每所学校的学生)。我需要计算每所学校的模块化。理想情况下,创建一个仅包含学校 ID 和学校模块化分数的新数据框。
数据受到限制,所以我不能发布它,但这里是一个玩具示例:
有数据
student_id school_id friendid_1 friendid_2 friendid_3 friendid_4
1 101 3 NA NA NA
2 101 5 2 3 NA
3 101 2 4 5 NA
4 101 1 6 NA 3
5 101 1 NA 6 2
6 101 5 NA 2 1
7 201 8 NA NA NA
8 201 NA 9 NA NA
9 201 8 7 NA NA
10 201 7 9 NA NA
11 301 19 15 NA 12
12 301 20 NA 19 11
13 301 15 19 11 NA
14 301 16 NA 12 18
15 301 17 20 17 NA
16 301 14 19 20 13
17 301 20 18 13 14
18 301 13 NA 19 17
19 301 17 NA 16 11
20 301 13 17 11 14
想要数据(只是学校 ID 和模块化分数
school_id modularity
101
201
301
以下是我尝试过的。我首先创建了一个仅包含学校 ID 的数据框。然后尝试了一个 for 循环,在其中我按学校抓取所有受访者并制作他们的图表以计算模块化,然后将其放入学校 DF。这不起作用:
schools <- as.data.frame(unique(df$school_id))
for (school in 1:length(unique(df$school_id))){
g <- graph_from_data_frame(school, directed = FALSE)
sg <- igraph::simplify(g, remove.loops = TRUE)
cl <- cluster_fast_greedy(sg)
schools <- modularity(cl)
}
【问题讨论】:
标签: r for-loop apply igraph network-analysis