当提出NA和NaN时,如何采用两个矩阵的平均值?

时间:2017-02-19 21:30:26

标签: r

当NA和NaN出现时,我想采用两个矩阵元素的平均值。我知道反复询问类似的问题,但NA和NaN没有。

对于NA + 1.2,期望的平均值为1.2。

elem

2 个答案:

答案 0 :(得分:1)

用矩阵制作一个数组:

arr <- array(cbind(y1,y2), dim = c(dim(y1), 2))

然后使用colMeans来处理缺失值(NANAN):

colMeans(aperm(arr, c(3, 1, 2)), na.rm = TRUE)

#           [,1]       [,2]         [,3]
#[1,] -0.9094480  0.1213812 -0.152905201
#[2,] -1.2058566 -0.4537133  0.437414704
#[3,] -0.2566812 -0.8607652  0.003213122

答案 1 :(得分:1)

你没有指定你想要的平均值-1.20 + NaN。它可能是-1.2或NaN。这也不难。

如果你想要均值(-1.2,NaN)= -1.2,请使用

DO = (y1 + y2)/2
DO[is.na(y1)] = y2[is.na(y1)]
DO[is.na(y2)] = y1[is.na(y2)]
DO
           [,1]       [,2]         [,3]
[1,] -0.9094480  0.1213812 -0.152905201
[2,] -1.2058566 -0.4537133  0.437414704
[3,] -0.2566812 -0.8607652  0.003213122

如果你想要均值(-1.2,NaN)= NaN,请使用

DO = (y1 + y2)/2
DO[!is.nan(y1) & is.na(y1)] = y2[!is.nan(y1) & is.na(y1)]
DO[!is.nan(y2) & is.na(y2)] = y1[!is.nan(y2) & is.na(y2)]
DO
           [,1]       [,2]         [,3]
[1,] -0.9094480  0.1213812 -0.152905201
[2,]        NaN -0.4537133  0.437414704
[3,] -0.2566812 -0.8607652  0.003213122