将 data.frame 转换为 xts order.by 需要适当的基于时间的对象 [英] Converting data.frame to xts order.by requires an appropriate time-based object
本文介绍了将 data.frame 转换为 xts order.by 需要适当的基于时间的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数据框:
> head(table,10)
Date Open High Low Close Volume Adj.Close
1 2014-04-11 32.64 33.48 32.15 32.87 28040700 32.87
2 2014-04-10 34.88 34.98 33.09 33.40 33970700 33.40
3 2014-04-09 34.19 35.00 33.95 34.87 21597500 34.87
4 2014-04-08 33.10 34.43 33.02 33.83 35440300 33.83
5 2014-04-07 34.11 34.37 32.53 33.07 47770200 33.07
6 2014-04-04 36.01 36.05 33.83 34.26 41049900 34.26
7 2014-04-03 36.66 36.79 35.51 35.76 16792000 35.76
8 2014-04-02 36.68 36.86 36.56 36.64 14522800 36.64
9 2014-04-01 36.16 36.86 36.15 36.49 15734000 36.49
10 2014-03-31 36.46 36.58 35.73 35.90 15153200 35.90
我正在尝试将其制作成 xts 文件使用
I am trying to make it into a xts file using
> table3<-xts(table[,-1],order.by=table$Date)
但我收到此错误:
Error in xts(table[, -1], order.by = table$Date) :
order.by requires an appropriate time-based object
我哪里做错了?我认为 table$Date 是按时间组织的.
Where did I go wrong? I thought that the table$Date were organized as time-based.
推荐答案
?xts
说关于 order.by
如下:
目前可接受的类包括:‘Date’、‘POSIXct’、‘timeDate’、以及保留索引值的yearmon"和yearqtr"独一无二.
Currently acceptable classes include: ‘Date’, ‘POSIXct’, ‘timeDate’, as well as ‘yearmon’ and ‘yearqtr’ where the index values remain unique.
因此需要额外的显式转换,例如POSIXct
:
So an extra explicit conversion is required, e.g. to POSIXct
:
xts(table[, -1], order.by=as.POSIXct(table$Date))
Open High Low Close Volume Adj.Close
2014-03-31 36.46 36.58 35.73 35.90 15153200 35.90
2014-04-01 36.16 36.86 36.15 36.49 15734000 36.49
2014-04-02 36.68 36.86 36.56 36.64 14522800 36.64
2014-04-03 36.66 36.79 35.51 35.76 16792000 35.76
2014-04-04 36.01 36.05 33.83 34.26 41049900 34.26
2014-04-07 34.11 34.37 32.53 33.07 47770200 33.07
2014-04-08 33.10 34.43 33.02 33.83 35440300 33.83
2014-04-09 34.19 35.00 33.95 34.87 21597500 34.87
2014-04-10 34.88 34.98 33.09 33.40 33970700 33.40
2014-04-11 32.64 33.48 32.15 32.87 28040700 32.87
另一种选择:
xts(table[, -1], order.by=as.Date(table$Date))
这篇关于将 data.frame 转换为 xts order.by 需要适当的基于时间的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文