我想计算3d数组列表的均值和分位数,同时跳过NA值。
我已经尝试过此解决方案,Mean of a list of 3D arrays in R,但我不知道如何计算分位数或应用na操作。
x <- array(1:24, dim = 2:4)
y <- array(24:49, dim = 2:4)
z <- array(50:74, dim = 2:4)
x[1,1,1] <- NA
myL <- list(x,y,z)
Reduce('+', myL) / length (myL)
实际:
, , 1
[,1] [,2] [,3]
[1,] NA 27 29
[2,] 26 28 30
, , 2
[,1] [,2] [,3]
[1,] 31 33 35
[2,] 32 34 36
, , 3
[,1] [,2] [,3]
[1,] 37 39 41
[2,] 38 40 42
, , 4
[,1] [,2] [,3]
[1,] 43 45 47
[2,] 44 46 48
所需:
, , 1
[,1] [,2] [,3]
[1,] 24 27 29
[2,] 26 28 30
, , 2
[,1] [,2] [,3]
[1,] 31 33 35
[2,] 32 34 36
, , 3
[,1] [,2] [,3]
[1,] 37 39 41
[2,] 38 40 42
, , 4
[,1] [,2] [,3]
[1,] 43 45 47
[2,] 44 46 48
还有分位数方法。谢谢。
更新:
我已经尝试过了:
a <- array(unlist(myL), dim = c(dim(myL[[1]]), length(myL)))
a.mean <- apply(a, 1:3, mean, na.rm=T)
a.quantile <- apply(a, 1:3, quantile, 0.95 na.rm=T)
但这在我的数组上非常慢([162,200,2190,3])。
更新2:
好的,这适用于均值计算:
rowMeans(do.call(cbind, myL), na.rm = TRUE)
但是,我不知道如何针对分位数执行此操作。