我喜欢使用 igraph 来显示交换机与因交换机问题而受影响的网络之间的关系。由于发生了很多事件,我想展示问题最严重并因此影响网络的前 10 个交换机。
df
Incident Date Switch ImpactedNetwork
123 1/1/2012 A Wireless
455 1/2/2012 B LocalLan
460 1/3/2012 A LocalLan
465 1/4/2012 A Production
等等
每当开关发生事件时就分配 1:
df$count<-c(1)
找出最有问题的 10 个开关:
library(data.table)
df<-df[, total := sum(count), by = Switch]
df
Incident Date Switch ImpactedNetwork count Total
123 1/1/2012 A Wireless 1 3
455 1/2/2012 B LocalLan 1 1
460 1/3/2012 A LocalLan 1 3
465 1/4/2012 A Production 1 3
从这个 df 中,我如何获得基于总计的前 10 个最高事件?
一旦确定了前十名交换机,我就需要对出现问题的交换机进行 ImpactedNetwork 的聚合计数。
t<-aggregate(count~ImpactedNetwork+Switch, df, sum)
t
ImpactedNework Switch count
Production A 1
Wireless A 1
plot(t, layout = layout.kamada.kawai, vertex.label = V(g)$name, vertex.label.color= "darkblue", edge.arrow.size=0.9, edge.curved=T, edge.label=t$count, edge.label.color="#F900F9", edge.label.font=10,vertex.shape="rectangle",edge.color="darkgreen", main="Top 10 Problematic Switches and Impacted Network"))
想法是这样的:
- 计算最多事件生成的开关
- 计算受影响网络的数量并提供给交换机 3.绘制结果。
我应该在两个单独的数据帧中执行此操作,以首先计算最多事件生成的开关吗?并且,计算受影响网络的数量的 anchor 数据帧?任何想法表示赞赏。
最佳答案
df[,Total:=sum(count),by=Switch][head(order(-Total),10)][ ... etc ... ]
关于r - 如何使用两个不同的标准对 data.table 执行两次聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090299/