【发布时间】:2019-11-14 09:40:09
【问题描述】:
我已经尝试多次调用分位数,但考虑到我需要 0.05 的分位数增量并且我的数据非常大,这非常低效。
ff <- function(table, IDs, q.increment=0.05){
fun <- list("mean" = function(x) mean(x, na.rm = TRUE),
"median" = function(x) median(x, na.rm =TRUE),
function(x) quantile(x, probs = seq(0, 1, q.increment), na.rm=T))
fun.names <- names(fun)
abc <- table[ , c(summary = list(fun.names),
lapply(.SD, function(col) I(lapply(fun, function(f) f(col))))),
by = IDs, .SDcols = grep("value", names(table))]
return(abc)
}
dt <- data.table(country = c("FR", "US", "HU", "HU", "FR", "FR", "US", "US", "US", "HU"), value1=rnorm(10), value2=rnorm(10))
abc <- ff(dt, c("country"))
我不喜欢的是分位数都在一个单元格中,我希望每个分位数都有一行。
【问题讨论】:
标签: r statistics data.table summary quantile