如何在POSIX中提取小时,分钟和秒(忽略日期)

时间:2017-09-16 22:37:19

标签: r datetime time casting

我在数据框中有这个列

> str(df[,"Saida"])
  POSIXct[1:2498938], format: "2016-01-01 04:05:00" "2016-01-01 04:23:00" "2016-01-02 04:09:00" "2016-01-03 03:58:00" ...

我想忽略事件发生时的日期,但只考虑小时,分钟和秒。我虽然很直接:

hms(df[,"Saida"])

这就出现了

Warning message:
In .parse_hms(..., order = "HM", quiet = quiet) :
  Some strings failed to parse

不好的迹象。返回是一个充满NA

的向量

-------------------------------------------- ----------------------------

您能否帮我找到解决方案,例如:转换" 2016-01-01 04:05:00"到" 04:05:00"作为一个时间类,所以我可以区分元素,后者

PS: 这可能会有所帮助

> dput(head(df[,"Saida"]))

structure(c(1451628300, 1451629380, 1451714940, 1451800680, 1451892720, 
1451973420), class = c("POSIXct", "POSIXt"), tzone = "")

2 个答案:

答案 0 :(得分:5)

这是使用data.table执行此操作的一种方法:

library(data.table)
#I named your dput(head(df[,"Saida"])) as vec
time <- as.ITime(vec)
time
#[1] "06:05:00" "06:23:00" "06:09:00" "05:58:00" "07:32:00" "05:57:00"
str(time)
#Class 'ITime'  int [1:6] 21900 22980 22140 21480 27120 21420

正如您所看到的,该类为ITime,以便您可以在以后进行任何计算。

答案 1 :(得分:2)

以下是来自times

chron的另一个选项
library(chron)
times(format(vec, "%H:%M:%S"))
#[1] 11:35:00 11:53:00 11:39:00 11:28:00 13:02:00 11:27:00