如何从 R 中互连的两列创建树形图?

问题描述 投票:0回答:1

我的列排列如下:

Product: Charge:
P1       C1
P1       C2
P2       C1
P2       C3
P3       C2

我需要显示一个树形图,设置第一个产品 P1,然后显示附加到该产品的所有费用(p1 - c1 和 p1 到 c2),然后下一个象限显示附加到这些费用 c1 和 c2 的产品。然后下一个象限显示这些产品所附加的费用等等,直到没有更多的关系可以添加。

FromDataFrameNetwork 不起作用,因为它说找不到根名称。网络不是树。请帮忙。

参见上面的解释。

r networking tree
1个回答
0
投票

您可以像下面这样使用

igraph

library(igraph)

g <- graph_from_data_frame(df, directed = FALSE)

setNames(
  do.call(
    rbind,
    lapply(
      all_shortest_paths(g,
        from = "P1",
        to = V(g)[degree(g) == 1]
      )$vpath,
      \(x) {
        as.data.frame(embed(names(x), 2)[, 2:1])
      }
    )
  ),
  c("from", "to")
)

你将获得

  from to
1   P1 C2
2   C2 P3
3   P1 C1
4   C1 P2
5   P2 C3
© www.soinside.com 2019 - 2024. All rights reserved.