Работа с этими данными значительно быстрее с dplyr:
library(dplyr)
system.time({
data %>%
group_by(groupname, starttime, fPhase, fCycle) %>%
summarise_each(funs(median(., na.rm = TRUE)), inadist:larct)
})
#> user system elapsed
#> 0.391 0.004 0.395
(вам понадобится dplyr 0.2, чтобы получить %>%
и summarise_each
)
Это выгодно для plyr:
library(plyr)
system.time({
df.median <- ddply(data, .(groupname, starttime, fPhase, fCycle),
numcolwise(median), na.rm = TRUE)
})
#> user system elapsed
#> 0.991 0.004 0.996
И aggregate()
(код от @ joshua-ulrich)
groupVars <- c("groupname", "starttime", "fPhase", "fCycle")
dataVars <- colnames(data)[ !(colnames(data) %in% c("location", groupVars))]
system.time({
ag.median <- aggregate(data[,dataVars], data[,groupVars], median)
})
#> user system elapsed
#> 0.532 0.005 0.537