2016-06-27 94 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) 

返回與上述相同的結果快得多。