gpt4 book ai didi

r - 在 R 中合并 netCDF 文件

转载 作者:行者123 更新时间:2023-12-04 10:55:24 25 4
gpt4 key购买 nike

我有 2 个 netCDF 文件(每个 .nc 文件有 4 个变量:Susceptible、Infected、Recovered 和 Inhabitable。每个变量的尺寸为 64 x 88)。我想将这 2 个文件合并到一个 netCDF 文件中,这样合并后的文件将分别堆叠在 2 个文件中易感、从 2 个文件中感染、从 2 个文件中恢复和从 2 个文件中可居住。

这是 2 个文件( firstsecond )

有人可以帮我吗?

提前致谢,
阿肖克

最佳答案

ncdf4包会做你想做的事。看看下面的代码,仅以一个变量为例。

#install.packages('ncdf4')
library(ncdf4)

file1 <- nc_open('England_aggr_GPW4_2000_0001.nc')
file2 <- nc_open('England_aggr_GPW4_2000_0002.nc')

# Just for one variable for now
dat_new <- cbind(
ncvar_get(file1, 'Susceptible'),
ncvar_get(file2, 'Susceptible'))
dim(dat_new)
var <- file1$var['Susceptible']$Susceptible

# Create a new file
file_new3 <- nc_create(
filename = 'England_aggr_GPW4_2000_new.nc',
# We need to define the variables here
vars = ncvar_def(
name = 'Susceptible',
units = var$units,
dim = dim(dat_new)))

# And write to it
ncvar_put(
nc = file_new,
varid = 'Susceptible',
vals = dat_new)

# Finally, close the file
nc_close(file_new)

更新:
另一种方法是使用光栅包,如下所示。我不知道如何制作 4D 栅格堆栈,所以我将您的数据拆分为一个 NCDF每个变量的文件。这对你有用吗?
#install.packages('ncdf4')
library(ncdf4)
library(raster)

var_names <- c('Susceptible', 'Infected', 'Recovered', 'Inhabitable')

for (var_name in var_names) {

# Create raster stack
x <- stack(
raster('England_aggr_GPW4_2000_0001.nc', varname = var_name),
raster('England_aggr_GPW4_2000_0002.nc', varname = var_name))

# Name each layer
names(x) <- c('01', '02')

writeRaster(x = x,
filename = paste0(var_name, '_out.nc'),
overwrite = TRUE,
format = 'CDF')
}

关于r - 在 R 中合并 netCDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45096730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com