2016-09-23 67 views
1

我試圖確定給每個服務器的最大(使用)列每天的用電高峯小時高峯使用一個數據幀中提取高峯日期時間:你如何從給定的每日期

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 

在這數據幀,爲日期9/16/2016爲cpu1,最大使用是17939,它發生在2016年9月16日12:00

我想使用data.table包,並可以選擇最大使用喜歡此:

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

I還需要提取高峯時段並創建一個新列作爲高峯列,並在那裏插入日期和時間?

任何想法如何提取峯值DATETIME for max用於該DATE?

+2

你可以試試'DF [,peaktime:= DATETIME [which.max(二手)],由=。 (服務器,日期)]' – akrun

回答

3

我們可以使用which.max得到'服務器','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)] 
+0

而不是使用which.max,是否有可能使用which.quantile,我喜歡lo好吧,在第95百分點。 – user1471980

+0

@ user1471980沒有'which.quantile'功能。 – akrun

相關問題