在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"