усредненные поля в наборе файлов netcdf, каждый с одинаковыми размерами, в R

Предположим, у нас есть 10 из этих файлов. В этом наборе данных netcdf есть переменная tmp, которая представляет собой трехмерный массив: [lon][lat][time]. Теперь, как мне объединить эти 10 файлов, чтобы получить один файл с переменной tmp, значения которой являются средним из объединенных значений.

Я думал, что смогу это сделать ncra (http://nco.sourceforge.net/nco.html#xmp_ncra), но не увенчались успехом.


person gudday    schedule 18.09.2013    source источник
comment
С точки зрения NCO это может быть ncea file*.nc ave_file.nc в среднем по ансамблю файлов, а не по измерению записи внутри файлов.   -  person Dave X    schedule 16.05.2015


Ответы (2)


Вы можете использовать пакет ncdf, чтобы прочитать 10 файлов в R, объединить их в один большой массив nlon x nlat x time x nfiles, используя abind из пакета abind, а затем использовать apply для усреднения измерения file. Все это предполагает, что у вас достаточно оперативной памяти для загрузки этих 10 наборов данных в память, то есть они не могут быть слишком большими.

В качестве альтернативы я бы посмотрел на CDO. , который представляет собой инструмент командной строки для управления файлами NetCDF. Также может быть способ получить от этого инструмента то, что вы хотите. Это может быть более удобный для памяти вариант.

person Paul Hiemstra    schedule 18.09.2013

Решение CDO заключается в использовании команды ensmean, «ens» относится к ансамблевым операциям с несколькими файлами. Итак, базовая команда для усреднения 3 входных файлов будет:

cdo ensmean file1.nc file2.nc file3.nc   ensemble_mean.nc

Очевидно, что набирать длинный список имен файлов утомительно, поэтому лучше использовать подстановочные знаки. Поэтому, если у вас есть такие имена файлов, как file01.nc, file02.nc и т. Д., Вы можете использовать

cdo ensmean file*.nc ensemble_mean.nc 

Обратите внимание, что, поскольку эти команды не знают, сколько будет входных файлов, вы не можете комбинировать эту команду с другими операторами CDO, используя процесс конвейерной обработки.

person Adrian Tompkins    schedule 01.02.2020