考虑到每台服务器的最大(已使用)列,我正在尝试确定每天的峰值使用小时数:
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最大值用于该日期?
答案 0 :(得分:3)
我们可以使用which.max
来获取最大行数的索引,在按“服务器”,“日期”分组后,使用该索引对“DATETIME”进行分组,并通过分配({{来创建'峰值时间' 1}})它的值
:=
如果我们需要'peakused'和'peaktime',那么
df[, peaktime := DATETIME[which.max(Used)], by = .(Server, DATE)]