2

假设我们有 10 个这样的文件。这个 netcdf 数据集有一个名为 tmp 的变量,它是一个 3 维数组:[lon][lat][time]. 现在我如何组合这 10 个文件以获得一个带有变量 tmp 的文件,其值是组合值的平均值。

我以为我可以做到 ncra ( http://nco.sourceforge.net/nco.html#xmp_ncra ) 但没有成功。

4

2 回答 2

1

您可以使用ncdf包将 10 个文件读入 R,使用包中的将它们组合成一个大数组nlon x nlat x time x nfiles,然后使用来平均维度。这一切都假设您有足够的 RAM 将这 10 个数据集加载到内存中,即它们不能太大。abindabindapplyfile

或者,我会看看CDO,它是一个用于操作 NetCDF 文件的命令行工具。可能还有一种方法可以从该工具中获得您想要的东西。这可能是对内存更友好的选择。

于 2013-09-18T07:51:19.410 回答
0

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 运算符结合使用。

于 2020-02-01T10:19:47.930 回答