在R中使用正则表达式获取日期

在R中使用正则表达式获取日期,r,regex,date,datetime,R,Regex,Date,Datetime,我的各种文件名如下所示: 文件问题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") 对问题2的回

我的各种文件名如下所示:
文件问题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")

对问题2的回答:如何将小时数“…p264…”添加到x:

hrs <- gsub(".*[p]+(\\d{3}).*","\\1",x)

require(lubridate)

x + hours(hrs)

注:264小时(即11天)被添加到曾经的“2015-01-15 01:00:00”中。

您使用
a
而不是
chr
作为.Date函数。如果使用
chr
,则
as.Date.
as.POSIXct
将正常工作。对于第一个问题,请使用
as.POSIXct
(用于日期时间)而不是
as.Date
(仅用于日期)。日期不包括小时和分钟。仅供参考:。@D.sen和@NathanWerth,我使用as.POSIXct,得到以下值:
datetime datetime[1]NA
。有任何注释吗?^请不要添加
%M%S
,您的字符串不反映该格式。那么如何将其转换为datetime?对问题2有什么意见吗?谢谢。你能帮我解决问题2吗?@Kaushik-两个都解决了;见上文。@Kaushik-如果这有帮助,请记住将此答案标记为解决方案,以帮助社区知道它已经解决,并帮助其他有类似问题的人更快地找到答案。
validhrs<-substr(gsub("[A-z]|[////]","",ncfname),17,19)
Result:
validhrs
[1] "264"
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"
hrs <- gsub(".*[p]+(\\d{3}).*","\\1",x)

require(lubridate)

x + hours(hrs)
[1] "2015-01-26 01:00:00 PST"