2016-06-27 9 views
0

Rで動作させたいnetCDF4ファイルが大きすぎます。私は、データの塊を読み込んで要約するループを作成したいと思います。アレイ内での集約

読み込みたい変数は4次元です。 'lat'、 'lon'、 'member'、 'time'などがあります。時間は毎月の解像度を持ち、メンバーには気候モデルからのアンサンブルランが60あります。

ncvar_getコマンドを使用して、NetCDFから12個のタイムスライスを抽出し、4次元配列を残しました。

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

これを集計すると、年次データを得ることができます。

答えて

0

私は、長さが12である4番目の次元が月の数であり、この次元にわたって集計し、次元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 

であり、最初の3つの要素は、

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

平均やその他の機能を使いたい場合は、sumを希望の機能に置き換えてください。

平均の合計と計算の最適化バージョンはrowSumsrowMeansです。

mySumArray <- rowSums(myArray, dims=3) 

は、上記と同じ結果をより速く返します。