我的数据看起来像这样
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"
如何将这些转换为日期时间对象,特别是,不包括秒?
答案 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"