我正在尝试确定给定每个服务器的最大(使用)列每天的峰值使用小时:
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
我正在尝试使用数据。表包,可以选择最大使用如下:
df<-data.table(df)
df<-df[,peak_used:=max(Used), by=c("Server","DATE")]
我还需要提取高峰时间并创建一个新列作为高峰列,并在那里插入日期和时间?
任何想法我如何提取峰值DATETIME为最大用于该日期?
我们可以使用which.max
获得最大行的索引,在按'Server', 'DATE'分组后,使用该索引对'DATETIME'进行子集,并通过分配(:=
)值来创建'peaktime'
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)]