在数组中聚合

时间:2016-06-27 13:03:53

标签: arrays r aggregate

我想在R中使用的netCDF4文件太大了。我想写一个循环,它将读入一大块数据并对其进行总结。

我想读的变量有4个维度; ' lat',' lon','会员'而且'时间'时间是每月分辨率,成员包含来自气候模型的60个集合。

使用ncvar_get命令我从netCDF中提取了12个时间片,留下了4维数组。

num[1:144,1:69:1:60,1:12]

我如何汇总这个以便我有年度数据。

1 个答案:

答案 0 :(得分:0)

我假设您的第四个维度,其长度为12是月数,您希望在此维度上进行汇总并返回维度c(144, 69, 60)的数组。

可重现的数据(相同维度的数组,全部为1)

myArray <- array(1, dim =c(144, 69, 60, 12))

以下是使用apply的方法:

mySumArray <- apply(myArray, c(1,2,3), sum)

返回一个具有以下尺寸的数组:

dim(mySumArray)
[1] 144  69  60

前三个元素是:

mySumArray[1:3]
[1] 12 12 12

如果您想要平均值或其他功能,只需将sum替换为您想要的功能。

求和和计算均值的优化版本为rowSumsrowMeans

mySumArray <- rowSums(myArray, dims=3)

更快地返回与上面相同的结果。