我已经搜索了很长时间,以了解如何通过R.However计算空间平均值,但我找不到一些东西。我有一个二进制文件,有720列和360行,浮动的气温。我想首先计算整个区域的空间平均值,并计算(500-600列和200-250行)区域的空间平均值,然后提取面积。
t<- file("C:annual_Prc2000_without999_1.img","rb")
e=readBin(t, double(), size=4,n=720*360, signed=TRUE)答案1:
mean(e)
I got
NaN答案2:我得到了
spat_mean = apply(e, c(2,1), mean)
Error in apply(e, c(2, 1), mean) : dim(X) must have a positive length让我来解释一下:假设
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完成此操作
发布于 2012-11-04 22:04:09
假设你有一个规则的空间网格,你可能需要这样的东西:
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])发布于 2012-11-04 23:39:29
从你对另一个答案的评论中,我猜你想要计算每个x,y对的平均值。为此,您可以使用apply。假设您有一个具有x,y,时间维度的多维数组,获取每个x,y对的平均值如下所示:
spat_mean = apply(multi_dim_array, c(1,2), mean)spat_mean现在是一个二维数组,具有x,y维,给出了空间平均值。
https://stackoverflow.com/questions/13219133
复制相似问题