使用R将数据帧转换为时间序列

Abh*_*hek 1 portfolio r time-series quantitative-finance

我有格式的时间序列数据

               Time Ask Bid Trade Ask_Size Bid_Size Trade_Size
2016-11-01 09:00:12  NA 901    NA       NA      100         NA
2016-11-01 09:00:21  NA  NA   950       NA       NA          5
2016-11-01 09:00:21  NA 950    NA       NA        5         NA
2016-11-01 09:00:21 905  NA    NA       10       NA         NA
2016-11-01 09:00:24  NA 921    NA       NA      500         NA
2016-11-01 09:00:28  NA 879    NA       NA        2         NA
Run Code Online (Sandbox Code Playgroud)

数据帧的结构是

 str(df)

'data.frame':   35797 obs. of  7 variables:
 $ Time      : POSIXct, format: "2016-11-01 09:00:12" "2016-11-01 09:00:21" ...
 $ Ask       : num  NA NA NA 905 NA NA 1040 NA NA 905 ...
 $ Bid       : num  901 NA 950 NA 921 879 NA NA 950 NA ...
 $ Trade     : num  NA 950 NA NA NA NA NA 950 NA NA ...
 $ Ask_Size  : num  NA NA NA 10 NA NA 6 NA NA 10 ...
 $ Bid_Size  : num  100 NA 5 NA 500 2 NA NA 5 NA ...
 $ Trade_Size: num  NA 5 NA NA NA NA NA 5 NA NA ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用代码将其转换为时间序列

library(zoo)
library(xts)
library(lubridate)

df_ts <- xts(x = df, order.by = df$Time)
Run Code Online (Sandbox Code Playgroud)

但我得到了奇怪的输出

                    Time                    Ask       Bid      Trade Ask_Size Bid_Size Trade_Size
2016-11-01 01:00:03 "2016-11-01 01:00:03"   NA        "938.10" NA    NA       " 203"   NA        
2016-11-01 01:00:04 "2016-11-01 01:00:04"   NA        "937.20" NA    NA       " 100"   NA        
2016-11-01 01:00:04 "2016-11-01 01:00:04" " 938.00"    NA       NA    "  28"   NA       NA        
2016-11-01 01:00:04 "2016-11-01 01:00:04"   NA        "938.10" NA    NA       " 203"   NA        
2016-11-01 01:00:04 "2016-11-01 01:00:04" " 939.00" NA       NA    "  11"   NA       NA        
2016-11-01 01:00:05 "2016-11-01 01:00:05"   NA        "938.15" NA    NA       "  19"   NA  
Run Code Online (Sandbox Code Playgroud)

"时间"列中的时间出现两次,开始时间也是下午1:00.时间顺序不符合原始数据格式.(原始数据帧的开始时间是从上午9:00开始).请帮忙.

knb*_*knb 5

试试这个:

df_ts <- as.xts(x = df[, -1], order.by = df$Time)

不用说,这会跳过第一列.