如何从bupaR生成的process_map对象中提取from、to、value至数据框?
从bupaR流程地图对象提取
from/to/value数据并转为DataFrame 问题描述
我使用bupaR包创建了流程地图:
library(bupaR) patients %>% process_map(performance(mean, "days")) perf <- patients %>% process_map(performance(mean, "days"))
现在希望从生成的perf对象中提取可见的from、to和value数据,并转换为dataframe。
解决方案
bupaR生成的process_map对象属于DiagrammeR图形对象,可通过以下步骤提取目标数据:
- 先从对象中取出底层图形数据:
graph_data <- perf$x$diagram - 提取边(edges)数据集,其中包含
from、to节点ID和对应的value(即你计算的平均耗时):edges_df <- graph_data$edges_df - 直接筛选所需列得到基础结果:
result_df <- edges_df[, c("from", "to", "value")] - 如果需要用节点名称(而非ID)展示
from和to,可结合节点(nodes)数据做映射:nodes_df <- graph_data$nodes_df # 需要先加载dplyr包 library(dplyr) result_df <- edges_df %>% left_join(nodes_df[, c("id", "label")], by = c("from" = "id")) %>% rename(from_activity = label) %>% left_join(nodes_df[, c("id", "label")], by = c("to" = "id")) %>% rename(to_activity = label) %>% select(from_activity, to_activity, value)
执行后就能得到包含流程路径起点、终点和对应平均耗时的DataFrame。
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

