Reputation: 10626
I am trying to create to separate data frames what will include Avg, Max and 95th percentile fo the data by Hostname.
The data frame would look something like this:
Hostname Avg Max 95th Percentile
Web01 10 90 92
Web02 5 80 75
dput(d)
structure(list(Hostname = structure(c(8L, 8L, 9L, 5L, 6L, 7L,
1L, 2L, 3L, 4L), .Label = c("db01", "db02", "farm01", "farm02",
"tom01", "tom02", "tom03", "web01", "web03"), class = "factor"),
Date = structure(c(6L, 10L, 5L, 3L, 2L, 1L, 8L, 9L, 7L, 4L
), .Label = c("10/5/2015 1:15", "10/5/2015 1:30", "10/5/2015 2:15",
"10/5/2015 4:30", "10/5/2015 8:30", "10/5/2015 8:45", "10/6/2015 8:15",
"10/6/2015 8:30", "9/11/2015 5:00", "9/11/2015 6:00"), class = "factor"),
Cpubusy = c(31L, 20L, 30L, 20L, 18L, 20L, 41L, 21L, 29L,
24L), UsedPercentMemory = c(99L, 98L, 95L, 99L, 99L, 99L,
99L, 98L, 63L, 99L)), .Names = c("Hostname", "Date", "Cpubusy",
"UsedPercentMemory"), class = "data.frame", row.names = c(NA,
-10L))
Is there an easy way to do this in r, I am trying to avoid loops.
I tried this:
dd %>% group_by(Hostname) %>% summarise_each(funs(mean, max))
I cannot figure out 95th percentile.
Upvotes: 0
Views: 33
Reputation: 887068
Not sure if this is the efficient way
library(dplyr)
library(lazyeval)
dd %>%
group_by(Hostname) %>%
summarise_(Mean = interp(~mean(var, na.rm=TRUE), var=as.name(m)),
Max=interp(~max(var, na.rm=TRUE), var=as.name(m)),
Quantile= interp(~quantile(var, prob=0.95), var=as.name(m)))
Upvotes: 1