将实数转换为R中的时间对象?

时间:2015-08-06 15:58:16

标签: r dataframe time-series

我的数据看起来像这样

 date       sym Hour Minute Second Open High  Low Close Volume
 2010/6/1 DLaMI    8     59     12 3838 3838 3838  3838    106
 2010/6/1 DLaMI    9      0     11 3838 3843 3835  3842   1616
 2010/6/1 DLaMI    9      1      0 3842 3842 3836  3837   1528
 2010/6/1 DLaMI    9      2      1 3838 3838 3836  3837    630
 2010/6/1 DLaMI    9      3      0 3837 3838 3837  3837    742
 2010/6/1 DLaMI    9      4      1 3837 3837 3835  3835   1106

正如我们所看到的,第一,第三,第四和第五列代表日期和时间,我如何将它们转换为日期时间对象,特别是,不包括秒? 为了重现目的,我提出了以下代码:

date<-rep("2010/6/01",5)
hour<-rep(9,5)
minutes<-c(0:4)
data<-data.frame(date,hour,minutes)  
      date        hour minutes
 [1,] "2010/6/01" "9"  "0"    
 [2,] "2010/6/01" "9"  "1"    
 [3,] "2010/6/01" "9"  "2"    
 [4,] "2010/6/01" "9"  "3"    
 [5,] "2010/6/01" "9"  "4" 

如何将这些转换为日期时间对象,特别是,不包括秒

2 个答案:

答案 0 :(得分:2)

首先,您需要粘贴(连接)您感兴趣的所有时间字符串:

x$new_datetime<-as.Date(x$datetime,"%Y/%m/%d:%H:%M")

然后,您可以将它们转换为时间对象:

date<-rep("2010/6/01",5)
hour<-rep(9,5)
minutes<-c(0:4)
data<-data.frame(date,hour,minutes)
data$datetime<-paste(data$date,data$hour,data$minutes,sep=":")
data$new_datetime<-as.Date(data$datetime,"%Y/%m/%d:%H:%M")

===========编辑添加==========

如果您想要使用稍后汇编的样本数据:

NA

它不会产生任何{{1}} s

答案 1 :(得分:0)

使用可重现的代码:

date<-rep("2010/6/01",5)
hour<-rep(9,5)
minutes<-c(0:4)

datetime <- paste(date, hour, minutes, sep = ":")

new_datetime <- strptime(datetime, format = "%Y/%m/%d:%H:%M")

这是你得到的:

> new_datetime
[1] "2010-06-01 09:00:00 CEST" "2010-06-01 09:01:00 CEST" "2010-06-01 09:02:00 CEST"
[4] "2010-06-01 09:03:00 CEST" "2010-06-01 09:04:00 CEST"