您可以使用 igraph 查看层和求和节点属性吗?
Can you use igraph to look at layers and sum node attributes?
我正在尝试为遵循树结构的组织的不同子集设计员工成本解决方案。我在 R 中使用 igraph 已经将一些示例代码和我试图回答的问题示例放在一起。我真的很感激一些帮助。谢谢
library(igraph)
# sample graph
g <- graph.tree(6, children = 2) %>%
set_vertex_attr("EmployeeID",value = LETTERS[1:6]) %>%
set_vertex_attr("Salary",value = 100 - 1:6*10) %>%
set_vertex_attr("label",value = paste("\n\n\nEmployee:",V(.)$EmployeeID,"\nSalary:",V(.)$Salary))
plot(g, layout=layout.reingold.tilford)
1.What是员工A下整个组织的成本? IE。遍历所有后代将薪水属性加起来:
90+80+60+50+70+40
2.What是第3层的成本?
60+50+40
3.Show每位经理的直接下属人数:
A:2
B:2
C:1
4.How很多员工只有1个直接下属?
1 Employee
C
Stack Overfow 上的一个 "question" 问题太多了。请阅读
How do I ask a good question?。
你需要自己尝试一些事情,当你遇到困难时,可以寻求具体的帮助。
但是,让我开始吧。要使用这样的图表,您需要能够 select 您想要的节点。
1.What是员工A下整个组织的成本吗?
您可以使用 subcomponent
来识别您想要的节点。
BelowA = subcomponent(g, which(V(g)$EmployeeID == "A") , mode = "out")
BelowA
+ 6/6 vertices:
[1] 1 2 3 4 5 6
sum(V(g)$Salary[BelowA])
[1] 390
2.What是第3层的成本吗?
您需要定义图层。那是到节点 A 的距离加一。然后 select 层 3 中的那些。
Depth = 1 + distances(g, v = which(V(g)$EmployeeID == "A"))
Depth
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 2 3 3 3
sum(V(g)$Salary[Depth == 3])
[1] 150
请尽量自己完成剩下的工作。如果您遇到困难,请向我们展示您尝试过的代码及其不起作用的原因。
我正在尝试为遵循树结构的组织的不同子集设计员工成本解决方案。我在 R 中使用 igraph 已经将一些示例代码和我试图回答的问题示例放在一起。我真的很感激一些帮助。谢谢
library(igraph)
# sample graph
g <- graph.tree(6, children = 2) %>%
set_vertex_attr("EmployeeID",value = LETTERS[1:6]) %>%
set_vertex_attr("Salary",value = 100 - 1:6*10) %>%
set_vertex_attr("label",value = paste("\n\n\nEmployee:",V(.)$EmployeeID,"\nSalary:",V(.)$Salary))
plot(g, layout=layout.reingold.tilford)
1.What是员工A下整个组织的成本? IE。遍历所有后代将薪水属性加起来:
90+80+60+50+70+40
2.What是第3层的成本?
60+50+40
3.Show每位经理的直接下属人数:
A:2
B:2
C:1
4.How很多员工只有1个直接下属?
1 Employee
C
Stack Overfow 上的一个 "question" 问题太多了。请阅读 How do I ask a good question?。 你需要自己尝试一些事情,当你遇到困难时,可以寻求具体的帮助。
但是,让我开始吧。要使用这样的图表,您需要能够 select 您想要的节点。
1.What是员工A下整个组织的成本吗?
您可以使用 subcomponent
来识别您想要的节点。
BelowA = subcomponent(g, which(V(g)$EmployeeID == "A") , mode = "out")
BelowA
+ 6/6 vertices:
[1] 1 2 3 4 5 6
sum(V(g)$Salary[BelowA])
[1] 390
2.What是第3层的成本吗?
您需要定义图层。那是到节点 A 的距离加一。然后 select 层 3 中的那些。
Depth = 1 + distances(g, v = which(V(g)$EmployeeID == "A"))
Depth
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 2 3 3 3
sum(V(g)$Salary[Depth == 3])
[1] 150
请尽量自己完成剩下的工作。如果您遇到困难,请向我们展示您尝试过的代码及其不起作用的原因。