首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取多个ncdf文件并以R表示平均值

读取多个ncdf文件并以R表示平均值
EN

Stack Overflow用户
提问于 2015-02-27 17:40:28
回答 2查看 2.6K关注 0票数 0

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

这个问题实际上和之前的其他问题是一样的。

我从这里其他那里得到了解释

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

在单个文件中打开数据没有问题,但是在错误地尝试在文件夹中循环一个特定变量(例如: var no 15)超过100个数据后,程序失败了。

代码语言:javascript
运行
复制
>  days = formatC(001:004, width=3, flag="0") 
>  ncfiles = lapply (days,
> function(d){  filename = paste("data",d,".nc",sep="")
>       open.ncdf(filename) })

同样,当我为一个特定的变量尝试这样的命令时

代码语言:javascript
运行
复制
> sapply(ncfiles,function(file,{get.var.ncdf(file,"var15")})

所以我的问题是,任何用特殊变量读取所有netcdf文件的解决方案,然后在一个框架内进行计算。因为在整个netcdf数据上生成变量15而失败。

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

更新:

这是我做的最后一件事

当我写

代码语言:javascript
运行
复制
    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)

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

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

因此,我如何能够自动获得新名称的变量数据,比如lw1,lw2...etc,我无法应用

代码语言:javascript
运行
复制
var1 <- lapply(files, FUN = get.var.ncdf, variable = "var15")

然后我可以用所有的数据来计算。

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

代码语言:javascript
运行
复制
# 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得到一个数据。注:我的数据名为sampe ( data20150102001.nc,data20150102002.nc.....etc)

EN

回答 2

Stack Overflow用户

发布于 2015-02-27 20:52:29

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

代码语言:javascript
运行
复制
ncra -v var15 data20150102*.nc out.nc

这就是全部。NCO 用户指南的完整文档。

票数 2
EN

Stack Overflow用户

发布于 2017-09-21 04:24:51

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

代码语言:javascript
运行
复制
cdo ensmean data20150102*.nc ensmean.nc

您可以将“平均”替换为您所选择的统计量,max、std、var、min等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28771109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档