您好我在csv文件中有大量数据集,这些数据集在一天,几个月和几年内都有数千个服务器内存使用量。例如,
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
现在我想查找每个服务器的总数据和使用数据。对于例如在server1的情况下,总数据为800,并且对于两个日期使用的是500和510。
我不知道如果我创建ts()
我如何分析它只需要一列我如何应用映射,这将说明给定服务器找到dataused和给定日期范围的数据总计。
我是R的新人请指导。提前谢谢。
答案 0 :(得分: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]