gpt4 book ai didi

r - R中没有NA的多阵列平均

转载 作者:行者123 更新时间:2023-12-04 09:28:59 25 4
gpt4 key购买 nike

我遇到一个多数组平均的问题,比如我有一个3维4*4*3数组x,

x
, , 1

[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] 0.5 NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA

, , 2

[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] 0.7 NA NA NA
[3,] 0.4 NA NA NA
[4,] NA NA NA NA

, , 3

[,1] [,2] [,3] [,4]
[1,] NA NA 0.8 NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA

我想要得到的是没有 NA 的总和,即非 NA 元素数量的平均值:

基本上结果是这样的

     [,1] [,2] [,3] [,4]

[1,] 0 0 0.8 0
[2,] 0.6 0 0 0
[3,] 0.4 0 0 0
[4,] 0 0 0 0

在matlab中我这样做 nansum(x, 3)./sum(~isnan(x), 3),我在R中尝试了很多,例如 apply(x, 3, sum, na.rm = T)Reduce ,尝试先得到初步结果

     [,1] [,2] [,3] [,4]

[1,] 0 0 0.8 0
[2,] 1.2 0 0 0
[3,] 0.4 0 0 0
[4,] 0 0 0 0

但我还是没搞定,有没有人有命中?

最佳答案

您使用 applyna.rm=TRUE 走在正确的轨道上。您只需使用参数 MARGIN=c(..., ...) 指定要应用的多个维度。

这是一个使用内置数据集泰坦尼克号的例子:

str(Titanic)
table [1:4, 1:2, 1:2, 1:2] 0 0 35 0 0 0 17 0 118 154 ...
- attr(*, "dimnames")=List of 4
..$ Class : chr [1:4] "1st" "2nd" "3rd" "Crew"
..$ Sex : chr [1:2] "Male" "Female"
..$ Age : chr [1:2] "Child" "Adult"
..$ Survived: chr [1:2] "No" "Yes"

现在对第 3 维和第 4 维求和:

apply(Titanic, c(3, 4), sum, na.rm=TRUE)
Survived
Age No Yes
Child 52 57
Adult 1438 654

关于r - R中没有NA的多阵列平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11608900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com