另一個選項打開了其他幾個統計選項。
如果您將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