我需要按照以下概率值0.05,0.25,0.50,0.75,0.90,0.95,0.99,1来计算100个变量(不包括时间)的分位数
数据结构如下
数据集名称-DF
time Var1 var2 var3.....var100
1 100 230 378......300
2 200 145 129......240
3 150 235 200 .... 690
我使用以下逻辑。
percentiles <- do.call("rbind",tapply(df[2:100],quantile,probs=c(0,0.05,0.25,0.50,0.75,0.90,0.95,0.99,1),na.rm=TRUE))
由于这仅在向量上运行,因此很难调用所有100个变量。
答案 0 :(得分:5)
为什么要使用tapply?在这里使用apply似乎很好,例如:
quants <- c(0,0.05,0.25,0.50,0.75,0.90,0.95,0.99,1)
apply( df[2:100] , 2 , quantile , probs = quants , na.rm = TRUE )