将实数转换为 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")
它不会产生任何 NA
s
使用您的可重现代码:
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"
我的数据是这样的
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")
它不会产生任何 NA
s
使用您的可重现代码:
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"