Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用date和seconds from midnight columns将data.frame转换为xts对象(R)_R_Xts - Fatal编程技术网

使用date和seconds from midnight columns将data.frame转换为xts对象(R)

使用date和seconds from midnight columns将data.frame转换为xts对象(R),r,xts,R,Xts,假设我有如下数据: DATE TIME Col1 Col2 1 1993-01-04 34538 10.250 10.000 2 1994-01-05 34541 10.250 10.111 3 1997-03-16 34546 10.250 10.222 4 2017-11-10 34561 10.251 10.333 5 2001-08-28 34565 10.251 10.444 6 2006-04-20 34807 10.251 10.555

假设我有如下数据:

        DATE  TIME   Col1   Col2
1 1993-01-04 34538 10.250 10.000
2 1994-01-05 34541 10.250 10.111
3 1997-03-16 34546 10.250 10.222
4 2017-11-10 34561 10.251 10.333
5 2001-08-28 34565 10.251 10.444
6 2006-04-20 34807 10.251 10.555
                       Col1   Col2
X1993.01.04.09.35.38 10.250 10.000
X1994.01.05.09.35.41 10.250 10.111
X1997.03.16.09.35.46 10.250 10.222
X2017.11.10.09.36.01 10.251 10.333
X2001.08.28.09.36.05 10.251 10.444
X2006.04.20.09.40.07 10.251 10.555
“时间”列的格式为午夜后的秒数。如何组合“日期”和“时间”列以获得一个类似以下内容的
xts
对象:

        DATE  TIME   Col1   Col2
1 1993-01-04 34538 10.250 10.000
2 1994-01-05 34541 10.250 10.111
3 1997-03-16 34546 10.250 10.222
4 2017-11-10 34561 10.251 10.333
5 2001-08-28 34565 10.251 10.444
6 2006-04-20 34807 10.251 10.555
                       Col1   Col2
X1993.01.04.09.35.38 10.250 10.000
X1994.01.05.09.35.41 10.250 10.111
X1997.03.16.09.35.46 10.250 10.222
X2017.11.10.09.36.01 10.251 10.333
X2001.08.28.09.36.05 10.251 10.444
X2006.04.20.09.40.07 10.251 10.555

通过指定
顺序,我们可以将“DATE”、“TIME”列转换为Datetime类,并将数据集转换为
xts

library(xts)     
library(lubridate)
xts(df1[-(1:2)], order.by = as.POSIXct(paste(df1$DATE, 
             hms::hms(seconds_to_period(df1$TIME)))))
#                      Col1   Col2
#1993-01-04 09:35:38 10.250 10.000
#1994-01-05 09:35:41 10.250 10.111
#1997-03-16 09:35:46 10.250 10.222
#2001-08-28 09:36:05 10.251 10.444
#2006-04-20 09:40:07 10.251 10.555
#2017-11-10 09:36:01 10.251 10.333
注意:
xts
的索引需要Datetime类对象,而不是格式化的字符类向量

数据
df1通过指定
顺序,我们可以将“DATE”、“TIME”列转换为Datetime类,并将数据集转换为
xts

library(xts)     
library(lubridate)
xts(df1[-(1:2)], order.by = as.POSIXct(paste(df1$DATE, 
             hms::hms(seconds_to_period(df1$TIME)))))
#                      Col1   Col2
#1993-01-04 09:35:38 10.250 10.000
#1994-01-05 09:35:41 10.250 10.111
#1997-03-16 09:35:46 10.250 10.222
#2001-08-28 09:36:05 10.251 10.444
#2006-04-20 09:40:07 10.251 10.555
#2017-11-10 09:36:01 10.251 10.333
注意:
xts
的索引需要Datetime类对象,而不是格式化的字符类向量

数据
df1我不是
xts
officionado,但我认为第一步是将这两列转换为
POSIXt
对象

as.POSIXct(dat$DATE,tz=“UTC”,format=“%Y-%m-%d”)+dat$TIME
#[1]“1993-01-04 09:35:38 UTC”“1994-01-05 09:35:41 UTC”
#[3]“1997-03-16 09:35:46 UTC”“2017-11-10 09:36:01 UTC”
#[5]“2001-08-2809:36:05 UTC”“2006-04-209:40:07 UTC”

(顺便说一句:假设是
%H.%M.%S”
格式,我想你没有36分61秒的时间……

我不是
xts
officionado,但我认为第一步是将这两列转换成
POSIXt
对象

as.POSIXct(dat$DATE,tz=“UTC”,format=“%Y-%m-%d”)+dat$TIME
#[1]“1993-01-04 09:35:38 UTC”“1994-01-05 09:35:41 UTC”
#[3]“1997-03-16 09:35:46 UTC”“2017-11-10 09:36:01 UTC”
#[5]“2001-08-2809:36:05 UTC”“2006-04-209:40:07 UTC”

(顺便说一句:假设采用
%H.%M.%S”
格式,我想您没有36分61秒的时间…

是的,谢谢。这些不是我正在处理的实际数据,只是问题的数字占位符。我去掉了那些没有意义的条目。是的,谢谢。这些不是我正在处理的实际数据,只是问题的数字占位符。我去掉了那些毫无意义的条目。