假设我们有 10 个这样的文件。这个 netcdf 数据集有一个名为 tmp 的变量,它是一个 3 维数组:[lon][lat][time]
. 现在我如何组合这 10 个文件以获得一个带有变量 tmp 的文件,其值是组合值的平均值。
我以为我可以做到 ncra ( http://nco.sourceforge.net/nco.html#xmp_ncra ) 但没有成功。
假设我们有 10 个这样的文件。这个 netcdf 数据集有一个名为 tmp 的变量,它是一个 3 维数组:[lon][lat][time]
. 现在我如何组合这 10 个文件以获得一个带有变量 tmp 的文件,其值是组合值的平均值。
我以为我可以做到 ncra ( http://nco.sourceforge.net/nco.html#xmp_ncra ) 但没有成功。
您可以使用ncdf
包将 10 个文件读入 R,使用包中的将它们组合成一个大数组nlon x nlat x time x nfiles
,然后使用来平均维度。这一切都假设您有足够的 RAM 将这 10 个数据集加载到内存中,即它们不能太大。abind
abind
apply
file
或者,我会看看CDO,它是一个用于操作 NetCDF 文件的命令行工具。可能还有一种方法可以从该工具中获得您想要的东西。这可能是对内存更友好的选择。
CDO 的解决方案是使用命令 ensmean,“ens”是指跨多个文件的 ensemble 操作。因此,用于平均 3 个输入文件的基本命令将是:
cdo ensmean file1.nc file2.nc file3.nc ensemble_mean.nc
显然,输入一长串文件名很无聊,所以最好使用通配符。因此,如果您有 file01.nc、file02.nc 等文件名,您可以使用
cdo ensmean file*.nc ensemble_mean.nc
请注意,由于这些命令不知道将有多少输入文件,因此您不能将此命令与使用管道过程的其他 CDO 运算符结合使用。