首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用R计算二进制文件中某一区域的空间平均值?

如何使用R计算二进制文件中某一区域的空间平均值?
EN

Stack Overflow用户
提问于 2012-11-04 21:53:53
回答 2查看 310关注 0票数 0

我已经搜索了很长时间,以了解如何通过R.However计算空间平均值,但我找不到一些东西。我有一个二进制文件,有720列和360行,浮动的气温。我想首先计算整个区域的空间平均值,并计算(500-600列和200-250行)区域的空间平均值,然后提取面积。

代码语言:javascript
复制
t<- file("C:annual_Prc2000_without999_1.img","rb")
 e=readBin(t, double(), size=4,n=720*360, signed=TRUE)

答案1:

代码语言:javascript
复制
             mean(e)
                I got 
                NaN

答案2:我得到了

代码语言:javascript
复制
              spat_mean = apply(e, c(2,1), mean)
            Error in apply(e, c(2, 1), mean) : dim(X) must have a positive length

让我来解释一下:假设

代码语言:javascript
复制
       m <- matrix(rnorm(10000),4,4)
         > m
            [,1]       [,2]         [,3]       [,4]
   [1,]  0.7930132  2.1973895  0.063493345 -0.5484056
   [2,]  0.5222513  0.4331308 -0.002393336  0.1725495
   [3,]  1.7462222 -1.5701996 -2.276781240  0.5628531
   [4,] -1.2713361 -0.9349057  0.757412225  1.5118180
        > mean(m)
      [1] 0.134757
        now I want this:
          [,1]       [,2]         [,3]       [,4]
   [1,] 0.134757   0.134757     0.134757    0.134757
   [2,]  0.134757   0.134757     0.134757   0.134757
    [3,]  0.134757   0.134757       0.134757   0.134757
    [4,] 0.134757    0.134757     0.134757     0.134757

我手动完成此操作,但我想通过R完成此操作

EN

回答 2

Stack Overflow用户

发布于 2012-11-04 22:04:09

假设你有一个规则的空间网格,你可能需要这样的东西:

代码语言:javascript
复制
set.seed(42)
m <- matrix(rnorm(10000),100,100)

#calculate mean of all values
mean(m)

#calculate mean of region 1:10 * 1:10
mean(m[1:10,1:10])
票数 2
EN

Stack Overflow用户

发布于 2012-11-04 23:39:29

从你对另一个答案的评论中,我猜你想要计算每个x,y对的平均值。为此,您可以使用apply。假设您有一个具有x,y,时间维度的多维数组,获取每个x,y对的平均值如下所示:

代码语言:javascript
复制
spat_mean = apply(multi_dim_array, c(1,2), mean)

spat_mean现在是一个二维数组,具有x,y维,给出了空间平均值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13219133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档