使用R或CDO中的NetCDF文件中的年代际数据计算1000年平均值



我有一个netCDF文件,记录了过去22000年的十年平均值(TraCE数据集)。我想计算100年或1000年的平均值。

我真的卡住了,如果有人能帮我,那就太好了。我主要使用R,但如果它在cdo中很简单,那么我也可以尝试一下。

我没有任何代码要展示,因为我真的不知道从哪里开始。我见过的大多数例子都是每天或每年的数据……没有十年

您的数据是十年平均值,因此在CDO中应该很容易做到这一点。你想要计算一个滚动平均值,它是每10个时间步长的平均值。因为runmean是你的朋友。只需执行以下操作:

cdo runmean,10 infile.nc outfile.nc

您可能需要之后的子集时间,这取决于您想要的确切输出。听起来你的时间可能是不标准的,但runmean应该仍然是可以的。

如果您想要100年或1000年时间尺度上的平滑输出,Robert的解决方案是有用的。您的原始数据集有2200个时间步,runmean,10对其进行平滑处理,并产生2200-9=2191个时间步的输出,每个时间步都是100年窗口的平均值,要么以片本身为中心,要么滞后/领先,具体取决于所使用的选项。

然而,从你的问题来看,我认为你更可能想要一个输出,其中第一个片是第一个世纪的平均值,第二个是第二个世纪的平均值,以此类推,也就是说,输出220个时间片,每个时间片一个世纪的平均值(或22个时间片1000年平均值)。换句话说,您想要一个类似于daymeanmonmeanyearmean的命令,但是由于没有称为centurymean的命令,那么您可以使用更通用的命令timselmean,并手动定义窗口长度:

# Centurial average:
cdo timselmean,10 infile.nc outfile.nc 
# Millennial Average:
cdo timselmean,100 infile.nc outfile.nc 

我认为这应该仍然工作,尽管你在评论中提到的非cf兼容的时间单位(但请告诉我们,如果它不)

最新更新