如何根据每个日期的峰值使用情况从数据框中提取峰值日期时间

时间:2016-09-23 16:17:46

标签: r

考虑到每台服务器的最大(已使用)列,我正在尝试确定每天的峰值使用小时数:

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

我还需要提取峰值小时并创建一个新列作为峰值列并在那里插入日期和时间?

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

1 个答案:

答案 0 :(得分:3)

我们可以使用which.max来获取最大行数的索引,在按“服务器”,“日期”分组后,使用该索引对“DATETIME”进行分组,并通过分配({{来创建'峰值时间' 1}})它的值

:=

如果我们需要'peakused'和'peaktime',那么

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