【问题标题】:how do you extract the peak datetime from a data frame given the peak usage per date给定每个日期的峰值使用量,如何从数据框中提取峰值日期时间
【发布时间】:2016-09-24 00:27:38
【问题描述】:

在给定每台服务器的 max(used) 列的情况下,我正在尝试确定每天的峰值使用时间:

DATE    DATETIME           Server MACH Capacity Used
9/16/2016   9/16/2016 12:00 cpu1    A   22256   17939
9/16/2016   9/16/2016 13:00 cpu1    A   22256   12591
9/16/2016   9/16/2016 14:00 cpu1    A   22256   15834
9/16/2016   9/16/2016 15:00 cpu2    B   22256   14095
9/16/2016   9/16/2016 16:00 cpu2    B   22256   18186
9/16/2016   9/16/2016 17:00 cpu2    B   22256   12637

在此数据框中,cpu1 的日期为 2016 年 9 月 16 日,使用的最大值为 17939,它发生在 2016 年 9 月 16 日 12:00

我正在尝试使用 data.table 包,并且可以像这样选择使用的最大值:

df<-data.table(df)
df<-df[,peak_used:=max(Used), by=c("Server","DATE")]

我还需要提取高峰时段并创建一个新列作为高峰列并在其中插入日期和时间?

任何想法如何提取用于该 DATE 的最大 DATETIME 峰值?

【问题讨论】:

  • 你可以试试df[, peaktime := DATETIME[which.max(Used)], by = .(Server, DATE)]

标签: r


【解决方案1】:

我们可以使用which.max 获取最大行的索引,在按“服务器”、“日期”分组后,使用该索引对“日期时间”进行子集化,并通过分配 (:=) 创建“峰值时间”它的价值

df[, peaktime := DATETIME[which.max(Used)], by = .(Server, DATE)]

如果我们同时需要“peakused”和“peaktime”,那么

df[, c("peakused", "peaktime") := {
       i1 <- which.max(Used)
      .(DATETIME[i1], Used[i1])},  by = .(Server, DATE)]

【讨论】:

  • 而不是使用which.max,是否可以使用which.quantile,我喜欢看第95个百分位数。
  • @user1471980 没有which.quantile函数。
猜你喜欢
  • 2021-06-28
  • 2018-03-02
  • 1970-01-01
  • 2019-01-23
  • 2010-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多