-1

我有一个这样的数据框:

dput(tail(x,10))
structure(list(DATE = structure(c(1375725600, 1375729200, 1375732800, 
1375736400, 1375740000, 1375743600, 1375747200, 1375750800, 1375754400, 
1375758000), class = c("POSIXct", "POSIXt"), tzone = ""), VOLUME = c(2790797L, 
2670868L, 2586397L, 2470043L, 2336334L, 2228206L, 2129270L, 2032518L, 
872133L, 725377L), PC = c(10.12, 9.95, 9.9, 9.46, 8.99, 8.94, 
9.79, 8.45, 8.85, 8.5)), .Names = c("DATE", "VOLUME", "PC"), row.names = 3399:3408, class = "data.frame")

我需要为时间创建另一个列,以便我可以在一天中的不同时间之间进行选择。

我试过这个:

x$time<-format(x$DATE, "%H:%M:%S)

没用,我得到的是空值。

我也试过这个:

x$t<-strptime(x$DATE, format="%H:%M:%S") 

我得到 NA 值。我的 x$DATE 格式为 POSIXct,有什么想法可以在这里进行吗?

4

2 回答 2

3

您可以使用lubridate日期的小时、分钟和秒来获取组件:

library(lubridate)
transform(x,time.str = format(DATE,'%H:%M:%S'),
              hour = hour(DATE),
              minute = minute(DATE),
              second= second(DATE))

                    DATE  VOLUME    PC time.str hour minute second
3399 2013-08-05 20:00:00 2790797 10.12 20:00:00   20      0      0
3400 2013-08-05 21:00:00 2670868  9.95 21:00:00   21      0      0
3401 2013-08-05 22:00:00 2586397  9.90 22:00:00   22      0      0
3402 2013-08-05 23:00:00 2470043  9.46 23:00:00   23      0      0
3403 2013-08-06 00:00:00 2336334  8.99 00:00:00    0      0      0
3404 2013-08-06 01:00:00 2228206  8.94 01:00:00    1      0      0
3405 2013-08-06 02:00:00 2129270  9.79 02:00:00    2      0      0
3406 2013-08-06 03:00:00 2032518  8.45 03:00:00    3      0      0
3407 2013-08-06 04:00:00  872133  8.85 04:00:00    4      0      0
3408 2013-08-06 05:00:00  725377  8.50 05:00:00    5      0      0
于 2013-08-06T15:05:50.703 回答
-1

这有效:

x$t<-strftime(x$DATE, format="%H:%M:%S")
于 2013-08-06T14:55:10.343 回答