我有各种文件名,如下所示: 文件< - " /path/path/path/pth.0p25.2015011500.p264.path2.pathpathh254004.nc"
问题1 : 我想从上面的文件中的datetime部分(2015011500)。我写了下面的代码:
# Fetching the date vlaue from the filename
a<-substr(gsub("[A-z]|[////]","",file),6,13)
a
[1] "20150115"
hrs<-substr(gsub("[A-z]|[////]","",file),14,15)
hrs
[1] "00"
#concatenating both date and a as one
chr<-paste(a,hrs, sep=" ")
chr
[1] "20150115 00"
但是当我试图将chr转换为日期时。我得到NULL值。
#Converting chr variable to date
datetime<-as.Date(a,format="%Y%m%d %H")
Result:
datetime
[1] NA
问题2 : 我想从文件名中获取264。代码如下:
validhrs<-substr(gsub("[A-z]|[////]","",ncfname),17,19)
Result:
validhrs
[1] "264"
我想将此有效时间转换为时间(小时)。然后将其添加到日期时间
有人可以帮我这个吗?
提前致谢!!
答案 0 :(得分:1)
回答问题1:如何从字符串中提取日期,然后将其转换为日期类:
x <- "/path/path/path/pth.0p25.2015011501.p264.path2.pathpathh254004.nc"
#Extract the date:
x <- gsub(".*(\\d{10}).*",'\\1',x)
#Convert to POSIXct:
x <- as.POSIXct(x,format="%Y%m%d %H")
输出:
[1] "2015-01-15 01:00:00 PST"
回答问题2:如何增加小时数,&#34; ... p264 ...&#34;在这种情况下,到x:
hrs <- gsub(".*[p]+(\\d{3}).*","\\1",x)
require(lubridate)
x + hours(hrs)
输出:
[1] "2015-01-26 01:00:00 PST"
注意:264小时(即11天)被添加到曾经的时间&#34; 2015-01-15 01:00:00&#34;。