如何高效收缩边列表DataFrame:合并节点并汇总边权重
节点收缩:高效合并DataFrame中边权重的方法
我有一个存储节点对边权重的DataFrame df,数据如下:
df <- data.frame(c("A","A","B","B","C","C"), c("B","C","A","C","A","B"), c(2,3,6,4,9,1)) colnames(df) <- c("node_from", "node_to", "weight") print(df) # 输出: # node_from node_to weight # 1 A B 2 # 2 A C 3 # 3 B A 6 # 4 B C 4 # 5 C A 9 # 6 C B 1
我希望收缩该DataFrame,合并节点A和B,汇总这两个节点与其他节点(此处仅为C)之间的所有边权重,最终得到A、B间的边消失,AB作为单个节点的边列表:
print(df_contracted) # 输出: # node_from node_to weight # 1 AB C 7 # 2 C AB 10
请问针对更大的DataFrame,是否有高效的实现方式?我可以用igraph包的graph_from_data_frame将DataFrame转为图,再用contract函数处理,但因需多次执行该操作,不想反复进行转换与回转换。
内容的提问来源于stack exchange,提问作者Wander Demuynck
相关产品推荐
相关产品推荐

