Как прочитать несколько файлов .nc и экспортировать их в различные соответствующие файлы .csv? - PullRequest
0 голосов
/ 12 октября 2019

У меня много файлов .nc (netcdf), каждый из которых представляет количество осадков с почасовым интервалом. Мне нужно конвертировать несколько файлов .nc в несколько соответствующих файлов .csv. Используя R, я могу успешно конвертировать один файл .nc в .csv, но я хочу конвертировать несколько файлов одновременно.

Я успешно конвертировал один файл .nc в файл .csv. Для одновременного преобразования нескольких файлов я попытался объединить все файлы вместе, используя команду stack, а затем преобразовать их в .csv, используя write.csv или writetable, но это показало ошибку и не сработало.

Код для преобразования одного файла .nc в .csv выглядит следующим образом:

library(raster)
nc.brick <- brick(file.choose())
nc.df <- as.data.frame(nc.brick[[1]], xy=TRUE)
write.csv(nc.df, file.choose())

В качестве вывода я получил файл .csv с тремя столбцами, один из которых представляет собой latitutde, второй -долгота и величина третьего дождя. Я хочу, чтобы такие похожие несколько файлов .csv были конвертированы из нескольких файлов .nc за один раз. Итак, есть ли способ конвертировать несколько файлов .nc в несколько файлов .csv соответственно?

1 Ответ

1 голос
/ 12 октября 2019

Вы можете сделать цикл по файлам в каталоге. Поэтому вместо использования file.choose (), который требует ручного выбора файлов, вы можете создать вектор файлов в вашем каталоге.

rm(list = ls())
install.packages(“raster”)
install.packages(“ncdf4”)
library(raster)
ptf <- "/path/to/nc/files"
setwd(ptf) # change your working directory
lf <- list.files(pattern="[.]nc$") # list of files ending in .nc
for(i in lf){
  nc.brick <- brick(i)
  nc.df <- as.data.frame(nc.brick[[1]], xy=T)
  write.csv(nc.df, sub("[.]nc$",".csv",i)) # write to the same file name substituting .nc to .csv
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...