另一个选项打开了其他几个统计选项。
如果您将40x20数据框的列表转换为40x20x1000数组,您可以将每个40x20“管”钻到第3维的apply
。
使用三个的2x4矩阵的示例:
set.seed(42)
lst <- lapply(1:3, function(ign) matrix(sample(8), nrow=2))
lst
# [[1]]
# [,1] [,2] [,3] [,4]
# [1,] 8 2 3 4
# [2,] 7 5 6 1
# [[2]]
# [,1] [,2] [,3] [,4]
# [1,] 6 3 7 8
# [2,] 5 4 1 2
# [[3]]
# [,1] [,2] [,3] [,4]
# [1,] 8 3 4 2
# [2,] 1 6 7 5
使用abind
文库,我们可以任意地沿第三暗淡结合。 (在这里,你会开始,给你的data.frames在列表中已捕获。abind
同样适用与相同大小data.frames,因为它与矩阵一样。)
library(abind)
ary <- abind(lst, along = 3)
dim(ary)
# [1] 2 4 3
现在运行任意沿着每个“管”(相对于“行”或“列”,因为大多数人认为apply
被用于)起作用。例如,在三层8,6和8,我们希望下面的统计数据给出的[1,1]
值:
mean(c(8,6,8))
# [1] 7.333333
sd(c(8,6,8))
# [1] 1.154701
现在,使用apply
:
apply(ary, 1:2, mean)
# [,1] [,2] [,3] [,4]
# [1,] 7.333333 2.666667 4.666667 4.666667
# [2,] 4.333333 5.000000 4.666667 2.666667
apply(ary, 1:2, sd)
# [,1] [,2] [,3] [,4]
# [1,] 1.154701 0.5773503 2.081666 3.055050
# [2,] 3.055050 1.0000000 3.214550 2.081666
这开辟了更多一些假设每个图层中的索引具有可比性,那么您的1000个相同大小的数据帧的统计聚合。您可能可以设计一个工作模型来确定中位数或其他百分位数,但对于第90个百分位数,可以很容易地(比如说)apply(ary, 1:2, quantile, 0.9)
。
这真的很整齐,感谢统计审查。我做了很多道理。 – ecolog