计算R中多个矩阵w/NA值的单元平均值
我有几个相同维度的矩阵,我试图计算矩阵的单元格平均值,同时考虑NA值。我不想删除具有一个或多个NA值的单元格,只想在计算中忽略它们。例如,如果我有三个矩阵,a,b和c计算R中多个矩阵w/NA值的单元平均值,r,matrix,R,Matrix,我有几个相同维度的矩阵,我试图计算矩阵的单元格平均值,同时考虑NA值。我不想删除具有一个或多个NA值的单元格,只想在计算中忽略它们。例如,如果我有三个矩阵,a,b和c a c1 c2 1 2 6 2 4 8 b c1 c2 1 NA 4 2 2 6 c c1 c2 1 4 8 2 6 NA 我需要的是一个结果矩阵,d,如下所示 d c1 c2 1 3 6 2
a
c1 c2
1 2 6
2 4 8
b
c1 c2
1 NA 4
2 2 6
c
c1 c2
1 4 8
2 6 NA
我需要的是一个结果矩阵,d,如下所示
d
c1 c2
1 3 6
2 4 7
…其中,d(3)中单元格[1,1]的值将是a(2)、b(NA)和c(4)中单元格[1,1]的平均值,在这种情况下,仅计算非NA的两个值的平均值。单元格[1,2]d(4)的值将是a(4)、b(2)和c(6)中单元格[1,2]的平均值,依此类推。我不能简单地使用(a+b+c)/3,因为我不是每个单元格都有3个值。在相关的帖子中,我已经看到了这个结果,对于d中的单元格,结果总是NA,其中任何原始矩阵在给定的单元格中都有NA
d
c1 c2
1 NA 6
2 4 NA
这似乎应该是一个相对简单的问题,我需要找到一个有效的解决方案,因为我的实际数据集是1200多行和250多列。我认为应该适合您,使用na.rm=TRUE
。
ar <- array(c(2,4,6,8,NA,2,4,6,4,6,8,NA),c(2,2,3))
apply(ar, c(1,2), mean, na.rm=TRUE)
[,1] [,2]
[1,] 3 6
[2,] 4 7