簡體   English   中英

如何從nc文件名中提取日期?

[英]How to extract a date from a nc file name?

我在一個文件夾中有四個netcdf文件,我想從這些文件中提取一些值。 該文件的str為:

            1] "file C:1.DBL.nc has 2 dimensions:"
           [1] "lat   Size: 1"
           [1] "lon   Size: 1"
           [1] "file C:\\Users\\data.nc has 3 variables:"
           [1] "short So[lon,lat]  
           [1] "short il[lon,lat]  
           [1] short fg[lon,lat] 

代碼是:

               a<-list.files("C:\\Users\\Data", "*.nc", full.names = TRUE)
               D<-matrix(NA,length(a),3)
       for(i in 1:length(a)){
        f <- open.ncdf(a[i])
        A = get.var.ncdf(nc=f,varid="So",verbose=TRUE)
        B <- get.var.ncdf(nc=f,varid="il")
        C <- get.var.ncdf(nc=f,varid="fg")
        D[i,]<-t(rbind(A,B,C))}

      write.table(D,file="output-all.txt")

該目錄中的每個文件都表示一個日期,該日期以該文件的名稱寫成20100929在此文件中:

      ext_20100929T235959_272_001_7_1.nc

我想將一個從文件名中獲取的date添加到輸出文本文件中

上面代碼的輸出將給出:

            "A" "B" "C"
        "1" 500 200 300
        "2" 500 200 300

我想將日期添加為:

            "A" "B" "C" "date"
        "1" 500 200 300   ?
        "2" 500 200 300    ?

歡迎任何幫助

從這樣的字符串向量中,您可以使用strptime提取日期時間:

 f <- "ext_20100929T235959_272_001_7_1.nc"
 strptime(f, "ext_%Y%m%dT%H%M%S", tz = "GMT")
 ## [1] "2010-09-29 23:59:59 GMT"

 dt <-   as.POSIXct(strptime(f, "ext_%Y%m%dT%H%M%S", tz = "GMT"))

(假設令牌化采用這種格式,請參閱help(strptime)了解詳細信息。)

您可以將“ dt”向量放入data.frame中,但是在您的問題中,您正在使用t()所有內容粉碎到矩陣中,因此還有其他問題。 我將使用上面的代碼一次完成所有文件名的工作-然后構建一個data.frame(date = dt, A = numeric(length(dt)), ...)等,然后在您的ABC行中填充環。

假設格式正確且一致,請使用此命令獲取所有文件日期:

 dt <-   as.POSIXct(strptime(basename(a), "ext_%Y%m%dT%H%M%S", tz = "GMT"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM