读取多个ncdf文件并在R中求平均值

读取多个ncdf文件并在R中求平均值,r,netcdf,nco,cdo-climate,R,Netcdf,Nco,Cdo Climate,通过使用R,我将尝试打开包含15个变量的5维空间的NetCDF数据。(计算变量在矩阵1000X920中) 这个问题实际上和之前的另一个问题一样 我从警察那里得到了解释 起初我使用了RNetCDF包,但经过一些试验后,当包读取我的数据时,我发现不一致。然后最终更好的使用了ncdf包 打开单个文件中的数据没有问题,但在我尝试在一个spesific变量(例如:var no 15)的文件夹中循环上百个数据后,程序失败了 > days = formatC(001:004, width=3, fla

通过使用R,我将尝试打开包含15个变量的5维空间的NetCDF数据。(计算变量在矩阵1000X920中)

这个问题实际上和之前的另一个问题一样

我从警察那里得到了解释

起初我使用了RNetCDF包,但经过一些试验后,当包读取我的数据时,我发现不一致。然后最终更好的使用了ncdf包

打开单个文件中的数据没有问题,但在我尝试在一个spesific变量(例如:var no 15)的文件夹中循环上百个数据后,程序失败了

>  days = formatC(001:004, width=3, flag="0") 
>  ncfiles = lapply (days,
> function(d){  filename = paste("data",d,".nc",sep="")
>       open.ncdf(filename) })
当我对一个spesific变量尝试这样的命令时

> sapply(ncfiles,function(file,{get.var.ncdf(file,"var15")})
所以我的问题是,任何一种解决方案都是读取所有带有特殊变量的netcdf文件,然后在一帧内进行计算。根据之前的解决方案,我未能在整个netcdf数据上生成15号变量

谢谢你对这个问题的任何解决方案

更新:

这是我做的最后一件事

当我写作时

    library(ncdf)

files=list.files("allnc/",pattern='*nc',full.names=TRUE)

for(i in seq_along(files)) {
nc <- lapply(files[i],open.ncdf)
lw = get.var.ncdf(nc,"var15")
x=dim(lw)
我可以获取一个变量数据,但我只从我的所有文件nc中获取了一个数据。
注:我的数据名样本(data20150102001.nc、data20150102002.nc…等)

此解决方案使用NCO,而不是R。您可以使用它检查您的R解决方案:

ncra -v var15 data20150102*.nc out.nc
仅此而已。
NCO中的完整文档。

您可以使用CDO的集成统计功能,但请注意,在某些系统上,文件数量限制为256:

cdo ensmean data20150102*.nc ensmean.nc

你可以用你选择的统计数据替换“平均值”,如最大值、标准值、var、最小值等。

我真的不确定我是否理解你的要求。但我强烈建议您看看光栅包。读取所有文件,堆叠它们(raster可以自动完成!),然后执行使用stackApply()或calc()或其他提供的函数所需的计算。谢谢,但当我尝试循环变量数据(如>var1)时,可能发现了我的问题。您尝试过ncdf4包吗?哦,我知道了,甚至没有尝试过。好点了吗?谢谢Charlie,我希望还能听到任何人关于R解决方案的消息
ncra -v var15 data20150102*.nc out.nc
cdo ensmean data20150102*.nc ensmean.nc