【问题标题】:Read Multiple ncdf files and make average in R读取多个 netcdf 文件并在 R 中取平均值
【发布时间】:2015-02-27 17:40:28
【问题描述】:

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

这个问题实际上和之前的另一个问题看起来一样。

我从hereothers 那里得到了解释

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

在单个文件中打开数据没有问题,但是在尝试循环在文件夹内的数百个数据中查找特定变量 (例如: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) })

当我尝试使用这样的命令来处理特定变量时

> 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)

rbind(df,data.frame(lw))->df }

我可以通过>nc获取所有netcdf数据

所以我如何自动获取具有新名称的变量数据,如 lw1、lw2...等 我不能申请

var1 <- lapply(files, FUN = get.var.ncdf, variable = "var15")

然后我可以对所有数据进行计算。

我尝试的另一种技术是使用 RNetCDF 包 n 进行循环

# Declare data frame
df=NULL

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

# Loop over files
for(i in seq_along(files)) {
nc = open.nc(files[i])

# Read the whole nc file and read the length of the varying dimension (here, the 3rd dimension, specifically time)
lw = var.get.nc(nc,'DBZH')
x=dim(lw)

# Vary the time dimension for each file as required
lw = var.get.nc(nc,'var15')

# Add the values from each file to a single data.frame
}

我可以获取可变数据,但我只从我的所有文件 nc. 注意:我的数据名称示例(data20150102001.nc,data20150102002.nc.....等)

【问题讨论】:

  • 我真的不确定我是否理解您的要求。但我强烈建议你看看 raster 包。读取所有文件,将它们堆叠起来(光栅可以自动为您完成!)并使用 stackApply() 或 calc() 或其他提供的函数执行您需要执行的计算。
  • 谢谢,但是当我尝试循环我的变量数据时可能发现我的问题 > var1
  • 你试试 ncdf4 包吗?
  • 哦,我明白了,甚至没有尝试。好点了吗?

标签: r netcdf nco cdo-climate


【解决方案1】:

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

ncra -v var15 data20150102*.nc out.nc

就是这样。 NCO User Guide 中的完整文档。

【讨论】:

  • 感谢查理,我希望仍然可以听到任何人的 R 解决方案
【解决方案2】:

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

cdo ensmean data20150102*.nc ensmean.nc

您可以用您选择的统计数据、max、std、var、min 等替换“mean”...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2021-08-03
    • 2017-08-13
    • 2015-05-23
    • 2020-06-19
    • 1970-01-01
    相关资源
    最近更新 更多