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

convert real numbers into time object in R?

我的数据是这样的

 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" 

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

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

x$datetime<-paste(x$date,x$Hour,x$Minute,sep=":")

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

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")

它不会产生任何 NAs

使用您的可重现代码:

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"