2016-06-27 64 views
0

我想在R中使用的netCDF4文件太大。我想编写一个循环来读取大量数据并对其进行总结。聚合在阵列中

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

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

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

我该如何汇总这个数据,才能得到年度数据。

回答

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) 

返回与上述相同的结果快得多。