R 用面板数据计算社会网络描述性统计数据

R 用面板数据计算社会网络描述性统计数据,r,nodes,panel,igraph,edges,R,Nodes,Panel,Igraph,Edges,我有在不同时间点在不同医院工作的医生的信息。我想在医院月级别定义网络,这样同龄人就是同时在同一家医院工作的医生。由于医生可以同时在多家医院工作,因此网络组部分重叠 然后,我想在月份级别计算结果网络的基本描述(例如,平均程度、密度、聚类),以了解这些描述如何随时间变化 考虑一个非常简单的例子,医院x-y-w,周期1-2和医生A-B-C-D 医生A、B和C在第1阶段在x医院工作 医生A和B在第2阶段在x医院工作 医生A在第1阶段在y医院工作 医生A和C在第2阶段在y医院工作 医生C和D在第1阶段在

我有在不同时间点在不同医院工作的医生的信息。我想在医院月级别定义网络,这样同龄人就是同时在同一家医院工作的医生。由于医生可以同时在多家医院工作,因此网络组部分重叠

然后,我想在月份级别计算结果网络的基本描述(例如,平均程度、密度、聚类),以了解这些描述如何随时间变化

考虑一个非常简单的例子,医院x-y-w,周期1-2和医生A-B-C-D

  • 医生A、B和C在第1阶段在x医院工作
  • 医生A和B在第2阶段在x医院工作
  • 医生A在第1阶段在y医院工作
  • 医生A和C在第2阶段在y医院工作
  • 医生C和D在第1阶段在医院w工作
  • 医生A和D在第2阶段在医院w工作
这在下面的数据框中表示

mydf <- data.frame(hospital = c("x","x","x","x","x","y","y","y","w","w","w","w"), 
                period = c(1,1,1,2,2,1,2,2,1,1,2,2), 
                physician = c("A","B","C","A","B","A","A","C","C","D","A","D"))
mydf%
左联合(mydf,by=c(“医院”、“期间”))%>%
重命名(至=医师)%>%
过滤器(从!=到)%>%
重新安置(从,到)
关系1%
过滤器(周期==1)
关系2%
过滤器(周期==2)
g1更新
您可以使用以下代码创建
g1
g2
degree1
degree2

rlst <- split(relations, relations$period)
for (i in seq_along(rlst)) {
  assign(paste0("g", i), simplify(graph_from_data_frame(rlst[[i]], directed = FALSE, vertices = NULL)), envir = .GlobalEnv)
  assign(paste0("degree", i), degree(get(paste0("g", i))), envir = .GlobalEnv)
}

[[1]]
A B C D
2 2 3 1

[[2]]
A B C D
3 1 1 1 

非常感谢@ThomaslsCoding!我想首先将网络保存到不同的对象中(如
g1
g2
),然后计算(并保存)不同数据帧中每个网络的度数(如
degrees1
degrees2
)。“我怎么能这样做呢?”保拉斯皮诺拉看着我的眼睛update@PaulaSpinola更新后的答案是否给出了所需的输出?是的,非常完美,谢谢!
relations %>%
  group_by(period) %>%
  group_map(~ degree(simplify(graph_from_data_frame(.x, directed = FALSE))))
[[1]]
A B C D
2 2 3 1

[[2]]
A B C D
3 1 1 1