美文网首页
R||*.nc文件怎么转换为*.Rdata文件

R||*.nc文件怎么转换为*.Rdata文件

作者: CopLee | 来源:发表于2022-04-27 14:33 被阅读0次

    1 说在前面

    有时候在处理*.nc文件时,为了计算的需要,往往需要把*.nc格式的文件转换为别的格式如*.RData。最好的存储R中数据的格式是保存为*.RData(也称为*.rda文件),它是R专属的文件,可以保存海量文件。有以下两个优点:

    • 将数据恢复到R中速度更快(it is faster to restore the data to R)
    • 它将 R 特定信息编码在数据中(例如,属性、变量类型等)

    2 多维数组

    首先我们生成一个三维数组认识一下多维数组的基本结构,了解多维数组是怎么构成的:

    dim1 <- c("lon1","lon2")
    dim2 <- c("lat1","lat2","lat3")
    dim3 <- c("time1","time2","time3","time4")
    
    z <- array(1:24,c(2,3,4),dimnames = list(dim1,dim2,dim3))
    
    三维数组

    接下来我们将时间维度数据进行时间命名,例如"2022-01-01","2022-02-01","2022-03-01","2022-04-01".

    start <- ymd("2022-01-01")
    end <- ymd("2022-03-01")
    time <- as.character(seq(start,end, by ="month"))
    
    lon <- c("lon1","lon2")
    lat <- c("lat1","lat2","lat3")
    
    z <- array(1:24,c(2,3,4),dimnames = list(lon,lat,time))
    
    三维数组-时间

    3 数据结构

    下面以HadISST数据为例记录一下*.nc数据的读取,数据集保存为HadISST_sst.nc,可以从这个数据网址下载获得。

    rm(list=ls(all=TRUE))
    
    library(ncdf4)
    library(abind)
    library(lubridate)
    library(tidyverse)
    
    setwd('~/../file')
    nc <- nc_open('HadISST_sst.nc') 
    print(nc) 
    

    lon-lat-time-sst(为了方便展示用python实现)

    4 数据转换

    4.1 读写与转换

    从上边对数据读取的过程中,我们发现数据的原始结构是按照lonlattime排列的,所以将数据通过R转换为list数据的时候注意顺序,即dimnames(dat) <- list(lon = varlon, lat = varlat, time = vartime);由于结合第2部分多维数组的介绍,根据上边对数据结构的分析,在这里注意两点,就是按照时间第三个维度进行融合,所以选取时间序列数据的时候应该是dat[[3]],具体dat的结构展示可以自行运行结果展示。另外从读取的数据结构展示出来原始数据结构如下图:

    数据结构展示
    file <- '~/../HadISST_sst.nc'
    path <- '~/../file'
    
    dat <- nc_open(file) %>% ncvar_get('sst')
    dims <- dim(dat)
    
    varlat <- nc_open(file) %>% ncvar_get('latitude')
    varlon <- nc_open(file) %>% ncvar_get('longitude')
    # vartime <- nc_open(file) %>% ncvar_get('time')
    start <- ymd("1870-01-01")
    end <- ymd("2020-04-01")
    vartime <- as.character(seq(start,end, by ="month"))
    
    dimnames(dat) <- list(lon = varlon, lat = varlat, time = vartime)
    

    4.2 保存

    sst <- dat
    outfile <- paste0(path, 'sst.Rdata')
    save(sst, file=outfile)
    

    4.3 RData数据展示

    Rdata数据结构

    参考网址:Convert_nc_to_RDdata

    相关文章

      网友评论

          本文标题:R||*.nc文件怎么转换为*.Rdata文件

          本文链接:https://www.haomeiwen.com/subject/ppucyrtx.html