如何读取多个.nc文件并将其导出到不同的相应.csv文件?

时间:2019-10-12 10:12:42

标签: r

我有很多.nc(netcdf)文件,每个文件代表每小时间隔的降雨量。我需要将多个.nc文件转换为多个相应的.csv文件。使用R,我能够将一个.nc文件成功转换为.csv,但我想一次转换多个文件。

我已成功将一个.nc文件转换为.csv文件。为了一次转换多个文件,我尝试使用'stack'命令将所有文件堆叠在一起,然后使用'write.csv'或'writetable'将.csv转换为.csv,但它显示错误并且无法正常工作。

将一个.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文件,其中一列代表纬度,第二经度和第三降雨值。我希望一次将多个类似的多个.csv文件从多个.nc文件中转换出来。那么,有什么方法可以将多个.nc文件分别转换为多个.csv文件?

1 个答案:

答案 0 :(得分:1)

您可以循环遍历目录中的文件。因此,无需使用需要手动选择文件的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
}