Мы можем melt
данные в «длинном» формате, сгруппированные по «переменной», получить mean
в list
, объединить со столбцом list
, созданным с quantile
library(data.table)
out <- melt(setDT(data))[, c(list(MEAN = mean(value)),
as.list(quantile(value, probs = c(.10, .90)))), variable]
out
# variable MEAN 10% 90%
#1: a 0.4903088 0.04842401 0.8790265
#2: b 0.4890356 0.11788974 0.9221995
#3: c 0.4890958 0.12364468 0.8670124
#4: d 0.4638097 0.06690734 0.9448844
setnames(out, 3:4, c('LOWER', 'UPPER'))
Или используйте setNames
в melt
melt(setDT(data))[, c(list(MEAN = mean(value)),
setNames(as.list(quantile(value, probs = c(.10, .90))),
c('LOWER', 'UPPER'))), variable]