如何使用两个不同的标准对data.table执行两次聚合函数

时间:2012-10-26 15:56:50

标签: r data.table igraph

我喜欢使用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

每次使用swithc发生事故时判断1:

df$count<-c(1)

提出十大最有问题的开关:

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,如何根据Total获得前10名最高事件?

一旦我确定前十个交换机,我需要将ImpactedNetwork的总数计算为最有问题的交换机。

t<-aggregate(count~ImpactedNetwork+Switch, df, sum)

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"))

这些想法是这样的:

  1. 计算最多事件生成的开关
  2. 计算受影响网络的数量给Switch 3.Igraph结果。
  3. 我是否应该在两个独立的数据框中执行此操作,以首先计算最常发生的事件?并且,anthor数据框架可以计算受影响网络的数量?任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:3)

df[,Total:=sum(count),by=Switch][head(order(-Total),10)][ ... etc ... ]