Как объединить файлы netcdf отдельно в R?

Я пользователь R и хотел бы получить помощь в следующем: у меня есть два файла netcdf (каждый размером 30x30x365) и еще один размером 30x30x366. Эти 3 файла содержат ежедневные данные за год, где последнее измерение относится к измерению времени. Я хотел объединить их по отдельности, т.е. я хотел, чтобы выходной файл содержал 30x30x1096.

Примечание: я видел аналогичный вопрос, но результат дает среднее значение (т.е. 30x30x3), которое мне не нужно.


person Keegan C    schedule 15.03.2019    source источник
comment
Возможный дубликат Объединить файлы netCDF в R   -  person divibisan    schedule 16.03.2019


Ответы (2)


из комментария, который я вижу ниже, вы, кажется, хотите объединить 3 файла во временном измерении. В качестве альтернативы R вы можете быстро сделать это из командной строки, используя cdo (операторы климатических данных):

cdo mergetime file1.nc file2.nc file3.nc mergedfile.nc

или используя подстановочные знаки:

cdo mergetime file?.nc mergedfile.nc

cdo легко установить под Ubuntu:

sudo apt install cdo 
person Adrian Tompkins    schedule 15.03.2019

Не зная точно, какие размеры и переменные у вас есть, этого может быть достаточно, чтобы вы начали:

library(ncdf4)

output_data <- array(dim = c(30, 30, 1096))
files <- c('file1.nc', 'file2.nc', 'file3.nc')
days <- c(365, 365, 366)

# Open each file and add it to the final output array
for (i in seq_along(files)) {
    nc <- nc_open(files[i])
    input_arr <- ncvar_get(nc, varid='var_name')
    nc_close(nc)

    # Calculate the indices where each file's data should go
    if (i > 1) {
        day_idx <- (1:days[i]) + sum(days[1:(i-1)])
    } else {
        day_idx <- 1:days[i]
    }

    output_data[ , , day_idx] <- input_arr
}

# Write out output_data to a NetCDF. How exactly this should be done depends on what
# dimensions and variables you have.

# See here for more:
#   https://publicwiki.deltares.nl/display/OET/Creating+a+netCDF+file+with+R
person C. Braun    schedule 15.03.2019
comment
@ C. Braun Я забыл упомянуть, имена файлов - file1.nc, file 2.nc и file3.nc. Имя переменной - sst, где 30x30 - долгота x широта, а 365/366 - дни. Не могли бы вы обновить? (На самом деле я здесь новичок) - person Keegan C; 15.03.2019