【问题标题】:fetch date using Regex in R在 R 中使用正则表达式获取日期
【发布时间】:2017-09-12 20:12:20
【问题描述】:

我有各种文件名,如下所示: 文件

问题 1: 我想要上面文件中的日期时间部分(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"

我想将此有效时间转换为时间(小时)。然后将其添加到日期时间

谁能帮我解决这个问题?

提前致谢!!

【问题讨论】:

  • 您在as.Date 函数中使用a 而不是chr。如果您使用chras.Date.as.POSIXct 将正常工作。
  • 对于您的第一个问题,使用as.POSIXct(用于日期时间)而不是as.Date(仅用于日期)。日期不包括小时和分钟。
  • @D.sen 和 @NathanWerth,我使用 as.POSIXct,得到以下值:datetime&lt;-as.POSIXct(chr,format="%Y%m%d %H%M%S") &gt; datetime [1] NA。有什么意见吗?
  • ^ 不要添加%M%S,您的字符串不反映该格式

标签: 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")

输出:

[1] "2015-01-15 01:00:00 PST"

问题 2 的答案:如何将小时数(在这种情况下为“...p264...”)添加到 x:

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

require(lubridate)

x + hours(hrs)

输出:

[1] "2015-01-26 01:00:00 PST"

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

【讨论】:

  • 那么如何将其转换为日期时间?关于问题2的任何cmets?
  • 谢谢。你能帮我解决问题2吗?
  • @Kaushik - 解决了这两个问题;见上文。
  • @Kaushik - 如果这有帮助,请记住将此答案标记为解决方案,以帮助社区知道它已解决,并帮助其他有类似问题的人更快地找到答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 2013-08-12
  • 1970-01-01
  • 2020-12-24
  • 2019-12-14
  • 2017-09-23
相关资源
最近更新 更多