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

标签 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

等等

每当开关发生事件时就分配 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"))

想法是这样的:

  1. 计算最多事件生成的开关
  2. 计算受影响网络的数量并提供给交换机 3.绘制结果。

我应该在两个单独的数据帧中执行此操作,以首先计算最多事件生成的开关吗?并且,计算受影响网络的数量的 anchor 数据帧?任何想法表示赞赏。

最佳答案

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

关于r - 如何使用两个不同的标准对 data.table 执行两次聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13090299/

相关文章:

r - 使用 or_glm() 函数调整优势比?

r - 基于 IIS 的网站的网页抓取

R 统计,将排名表更改为配对

r - 如何使用不同条件评估 data.table 中的列

javascript - 在 D3.js 中预先计算和设置节点的初始位置

python - 如何从其他格式(例如graphml)导出sbml文件?

r - 如何从R导出结果?

r - 从函数返回的警告 : 'Invalid .internal.selfref detected' when adding a column to a data. 表

python - 安装 Python igraph 的问题

r - 如何对某些列进行子集化并更改数据表的值