我想从具有多个数据列的数据框中创建一个图形,其中所有列都包含顶点,如下所示:示例数据
如果同时找到两个顶点,则应在图中将它们连接起来。在我的示例中,顶点“第3种情况”应连接到以下顶点:“第1种情况”,“乔恩”,“第5种情况”,“比尔”(不适用NA)。提前致谢!
您的问题是关于处理原始数据的,因为您需要正确地构建边列表。唯一的方法是用链接的发送者(第1列)和链接的接收者(第2列)指示两列。允许自我指向的链接(例如,从“ a”到“ a”)。其他列永远都是链接的特征。
您的示例边列表显示了3列顶点:这不是有效的边列表,其中一列是无用的。所以,
为了从您提供的示例中使用tidyverse
工具和%>%
运算符构造有效的边列表:
# ↓ SAMPLE DATA (colnames are different from the ones you provided) ↓
raw_data <- data.frame(case_no=c(1, 2,3, 4),
related_case =c(3,5,5, NA) ,
received_by = c("Jon", "Wendy","Jon", NA) ,
packed_by = c(NA, "Wendy", "Bill", NA) )
# ↓ First series of links ↓
edges_list <- raw_data %>%
select(FROM = case_no, related_case, TO = received_by) %>%
mutate(TYPE = 'Received') # ↑ THIS IS ONLY THE FIRST COLUMNS OF RECEIVERS
# ↓ APPEND THE SECOND LIST OF RECEIVER TO THE FIRST VERSION OF THE EDGESLIST↓
edges_list <- select(raw_data, FROM = case_no, related_case, TO = packed_by) %>%
mutate(TYPE = 'Packed') %>% #↑ HERE THE SECOND COLUMN OF RECEIVERS↑
rbind(edges_list)
edges_list <- na.omit(edges_list) # ← REMOVE NA FILLED ROWS
edges_list %>% igraph::graph_from_data_frame(directed = T) %>%
igraph::plot.igraph() # CREATE YOUR GRAPH
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句