2014-08-30 82 views
-2

嗨我有一個csv文件中的大型數據集,在整天,數月和數年內,數千個服務器的內存使用量。對於例如使用R的csv文件數據的迴歸數據分析使用R

serverData <- read.csv("server_mem_usage.csv") 
head(serverData) 

它打印如下:

date,server,datatotal(GBs),dataused(GBs) 
10 Jun 2014 17:00:50,server1,800,500 
10 Jun 2014 19:00:50,server1,800,510 
10 Jun 2014 18:00:50,server2,900,815 
10 Jun 2014 19:50:50,server2,900,850 

現在我想找到的每個服務器的總的和使用的數據。對於例如在服務器1的情況下,總數據是800,並且在兩個日期中使用500和510。

我不確定如果我創建ts()它只需要一列,我該如何分析這個映射,如果給定服務器找到給定日期範圍的dataused和datatotal的映射。

我是R新手請指導。提前致謝。

+0

您的期望輸出將如何看起來像? – 2014-08-30 20:00:08

+0

我想在CSV文件或圖形/繪圖任何事情都很好。無法在R中找出理想的輸出。如果我編寫Java程序,那麼我可以將服務器名稱映射爲dataused值。 – u449355 2014-08-30 20:03:16

+0

我想在我的數據集中爲每個服務器提供該服務器的所有可用日期範圍的數據我有server1有兩個日期2014年6月10日17:00:50和2014年6月10日19:00:50。我希望所有日期範圍和dataused列和datatotal列的每臺服務器的最終數據。 – u449355 2014-08-30 20:15:53

回答

1

我還不確定你需要什麼,但也許這樣?

library(data.table) 
setDT(serverData)[, list(`datatotal(GBs)` = `datatotal(GBs)`[1], 
         `dataused(GBs)`= paste(`dataused(GBs)`, collapse = ", ")), 
        by = list(server)] 

##  server datatotal(GBs) dataused(GBs) 
## 1: server1   800  500, 510 
## 2: server2   900  815, 850 

所以之後在私人聊天室的一些討論,好像你只需要在其達到每天的能力的至少95%的服務器列表。一種方法將是

library(data.table) 
temp <- setDT(serverData)[, list(ServerReachedMaxCapacity = any(`dataused(GBs)` >= `datatotal(GBs)`[1]*.95)), 
        by = list(server, Date = as.POSIXct(date, format = "%d %b %Y"))] 
temp2 <- temp[ServerReachedMaxCapacity == T, list(servers = paste(server, collapse = ", ")), by = Date]