从时间戳中提取时间?
Posted
技术标签:
【中文标题】从时间戳中提取时间?【英文标题】:Extract time from timestamp? 【发布时间】:2016-08-10 23:34:21 【问题描述】:基本上,我只需要 R 中的一列时间戳中的小时、分钟和秒,因为我想查看不同数据点在一天和一天的不同时间出现的频率,而日期是不相关的。
但是,这是数据集中时间戳的结构方式: 2008-08-07T17:07:36Z
我不确定如何只从这个时间戳中获取那个时间。
感谢您提供的任何帮助,如果我可以提供更多信息,请告诉我!
【问题讨论】:
【参考方案1】:我们可以使用strptime
转换为日期时间类,然后使用format
提取小时:分钟:秒。
dtime <- strptime(str1, "%Y-%m-%dT%H:%M:%SZ")
format(dtime, "%H:%M:%S")
#[1] "17:07:36"
如果 OP 想要将小时、分钟、秒作为单独的列
read.table(text=format(dtime, "%H:%M:%S"), sep=":", header=FALSE)
# V1 V2 V3
#1 17 7 36
另一个选项是使用lubridate
library(lubridate)
format(ymd_hms(str1), "%H:%M:%S")
#[1] "17:07:36"
数据
str1 <- "2008-08-07T17:07:36Z"
【讨论】:
【参考方案2】:只是
x <- '2008-08-07T17:07:36Z'
substr(x, 12, 19)
#[1] "17:07:36"
...如果时间戳是一致的,我想它会是一个 ISO_8601 (https://en.wikipedia.org/wiki/ISO_8601) 字符串。
【讨论】:
【参考方案3】:我想你期待这个......
Sys.time()
[1] "2016-04-19 11:09:30 IST"
format(Sys.time(),format = '%T')
[1] "11:09:30"
如果您想提供自己的时间戳,请使用以下代码:
format(as.POSIXlt("2016-04-19 11:02:22 IST"),format = '%T')
[1] "11:02:22"
【讨论】:
【参考方案4】:正则表达式可能会非常有效:
x <- '2008-08-07T17:07:36Z'
x
## [1] "2008-08-07T17:07:36Z"
sub('.*T(.*)Z', '\\1', x)
## [1] "17:07:36"
【讨论】:
以上是关于从时间戳中提取时间?的主要内容,如果未能解决你的问题,请参考以下文章