组合netcdf文件以平均R中变量的值

时间:2013-09-18 07:31:10

标签: r netcdf

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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操作员结合使用。