ncdf4
パッケージには、あなたがやりたいだろう。以下のコードを見てください.1つの変数の例だけです。
#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ラスタスタックの作り方を理解していなかったので、変数ごとに1つの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')
}
「個別にスタックする」とはどういう意味ですか? – Bart
新しい変数の次元は '(64,176)'か '(128,88)'であるべきですか? – JanLauGe
「別々に積み重ねる」とは、アレイを上下に並べることです。例えば、file1からの感受性は時間0001、file2からの感受性は0002の時間などです.Panoplyと呼ばれる無料のツールがあります。これは、netcdfファイルに変数の時間コンテキストがある場合にアニメーションを作成します(私の場合、感受性、感染、回復)。 –