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

时间:2014-11-25 17:01:32

标签: r netcdf

我在一个文件夹中有四个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")

dirctory中的每个文件表示在此文件中以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    ?

欢迎任何帮助

1 个答案:

答案 0 :(得分:1)

从这样的字符串向量中,您可以使用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)了解详情。)

你可以把那个&#34; dt&#34;矢量到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"))