2015-06-30 4 views
0

У меня есть данные о времени и ценах, и я хочу создать объект xts. Поэтому я написал:Как правильно создать объект xts

head(all) 
class(all$Time) 
class(all$Price) 
all$Time<- as.POSIXct(all$Time) # convert time to a factor 
class(all$Time) 
xt<- as.xts(all, order.by= as.POSIXct(as.character(all$Time))) 
class(xt$Time) 
class(xt$Price) 
head(xt) 

выход

> head(all) 

          Time Price 
1 2015/06/29 09:30:00.127000000 163.98 
2 2015/06/29 09:30:00.173000000 163.92 
3 2015/06/29 09:30:00.173000000 163.98 
4 2015/06/29 09:30:00.173000000 163.98 
5 2015/06/29 09:30:00.173000000 163.98 
6 2015/06/29 09:30:00.173000000 163.99 
> class(all$Time) 
[1] "factor" 
> class(all$Price) 
[1] "numeric" 
> all$Time<- as.POSIXct(all$Time) 
> class(all$Time) 
[1] "POSIXct" "POSIXt" 
> xt<- as.xts(all, order.by= as.POSIXct(as.character(all$Time))) 
> class(xt$Time) 
[1] "xts" "zoo" 
> class(xt$Price) 
[1] "xts" "zoo" 
> head(xt) 
        Time     Price  
2015-06-29 09:30:00 "2015-06-29 09:30:00" "163.9800" 
2015-06-29 09:30:00 "2015-06-29 09:30:00" "163.9200" 
2015-06-29 09:30:00 "2015-06-29 09:30:00" "163.9800" 
2015-06-29 09:30:00 "2015-06-29 09:30:00" "163.9800" 
2015-06-29 09:30:00 "2015-06-29 09:30:00" "163.9800" 
2015-06-29 09:30:00 "2015-06-29 09:30:00" "163.9900" 

Как вы можете видеть объект XTS выглядит как персонаж. Как я могу правильно сделать так, чтобы это были просто времена и цены?

+0

Вы разделили бы 'dput (head (all))' после преобразования posix? – Gregor

+1

Попробуйте с этим одним лайнером: 'xt <- with (all, xts (Price, as.POSIXct (Time))). –

ответ

1

Поскольку данные имеют миллисекунды информации, вы можете попробовать это:

options(digits.secs=6) 
all$Time <- strptime(all$Time, format ="%Y/%m/%d %H:%M:%OS") 
xts_price<-xts(all$Price,all$Time) 
colnames(xts_price) <- "Price" 
#> xts_price 
#       Price 
#2015-06-29 09:30:00.127 163.98 
#2015-06-29 09:30:00.173 163.92 
#2015-06-29 09:30:00.173 163.98 
#2015-06-29 09:30:00.173 163.98 
#2015-06-29 09:30:00.173 163.98 
#2015-06-29 09:30:00.173 163.99 
#> class(xts_price) 
#[1] "xts" "zoo" 

Надеется, что это помогает.

+0

Также обратите внимание, что объект xts больше не является символом, потому что столбец «Time» был опущен (поскольку это необязательно, так как время хранится в атрибуте 'index'). Это был символ раньше, потому что вы не можете смешивать типы в объекте xts. –

Смежные вопросы