楼主: andyhwang512
17721 20

[问答] 请教xts对象创建的问题 [推广有奖]

  • 2关注
  • 0粉丝

讲师

7%

还不是VIP/贵宾

-

威望
0
论坛币
12 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
11619 点
帖子
225
精华
0
在线时间
509 小时
注册时间
2009-7-25
最后登录
2022-11-8

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
1、数据保存在xlsx文件中,如下:
DateReturnRVBPV
2002/07/01

-0.01106

0.000118

0.000109

2002/07/02

0.006543

9.06E-05

8.73E-05

2002/07/03

0.003455

5.51E-05

5.65E-05

2002/07/04

-0.01033

6.18E-05

6.02E-05

2002/07/05

0.005269

7.49E-05

4.93E-05

2002/07/08

0.006217

3.57E-05

3.85E-05

2002/07/09

-0.0017

5.04E-05

4.66E-05



2、在R中,首先利用xlsx包读取数据。
require(xlsx)
realData = read.xlsx("F:/Synchros/Working/2014-002S3/data/szzzRealData.xlsx", 1, header=TRUE)
# class(realData) 显示为data.frame
# mode(realData) 显示为list
# 分开来看,class(realData[,1])显示为 factor
# class(realData[,2])显示为 numeric

3、试图利用xts包创建xts对象
realData.xts <- as.xts(realData, descr='my new xts object')
# 错误于as.POSIXlt.character(x, tz, ...) :
#  character string is not in a standard unambiguous format

似乎问题在于第一列的数据类型,但要如何处理呢?
有没有直接从EXCEL中读取数据,然后进行时间序列建模的好方法呢?求教
参考资料:http://blog.fens.me/r-xts/
这个帖子中,的样本数据集为
head(sample_matrix)               Open     High      Low    Close2007-01-02 50.03978 50.11778 49.95041 50.117782007-01-03 50.23050 50.42188 50.23050 50.397672007-01-04 50.42096 50.42096 50.26414 50.332362007-01-05 50.37347 50.37347 50.22103 50.334592007-01-06 50.24433 50.24433 50.11121 50.181122007-01-07 50.13211 50.21561 49.99185 49.99185
sample_matrix的第一列为numeric,可以直接用以构建xts对象。
sample.xlsx (10.48 KB)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:require numeric working xlsx文件 factor require

沙发
zxn2011 发表于 2014-11-26 20:49:44 来自手机 |只看作者 |坛友微信交流群
用分片选取部分数据即可,试试这个codedata<- xts(data[,-1],data[,1])

使用道具

藤椅
andyhwang512 发表于 2014-11-27 09:36:20 |只看作者 |坛友微信交流群
zxn2011 发表于 2014-11-26 20:49
用分片选取部分数据即可,试试这个codedata
还是不行。提示:
错误于xts(realData[, -1], realData[, 2]) :
  order.by requires an appropriate time-based object

我想还是软件无法识别第一列是关于时间的对象。。。。
多谢

使用道具

板凳
jiangbeilu 学生认证  发表于 2014-11-27 12:27:25 |只看作者 |坛友微信交流群
楼主,你可以把数据贴一小部分用xlsx的格式上来不?

这个难度不是很大,但是要亲自处理一下数据,才知道怎么确切处理。

使用道具

报纸
andyhwang512 发表于 2014-11-27 13:12:56 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2014-11-27 12:27
楼主,你可以把数据贴一小部分用xlsx的格式上来不?

这个难度不是很大,但是要亲自处理一下数据,才知道 ...
是啊  就是数据导入与对象构建的问题 主要是R学的不系统 自己处理不知道怎么折腾
这种基本问题 很多帖子或者教程都找不到答案。
附件已添加,劳烦帮忙,3Q

使用道具

地板
jiangbeilu 学生认证  发表于 2014-11-27 13:33:28 |只看作者 |坛友微信交流群
复制代码
xx和Date之间是有一个美元符号的"$",好像显示不出来。看不到的话,就把代码改一下。已经上传了好几次,都是只显示第一行library(xlsx),实在是没有办法。
options那句,是把读入的character向量,不让它转变成Factor型向量;
strptime函数可以按照一定格式来提取时间,你的时间读入,前面是有一个空格的,不知道你注意没有。
转化成时间之前,后面的代码我就不写了,希望你可以继续做下去。至少代码运行是没有问题的。 代码.png
不是我不想贴代码,是因为代码上传每次都只显示第一行:library(xlsx)
注间strptime那里,“ %Y/%m/%d"里面有一个空格的。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
胡老 + 5 + 5 + 5 最后一行不对吧?应该是&lt;-xts(xx, oder.b.

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

7
andyhwang512 发表于 2014-11-27 19:43:07 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2014-11-27 13:33
xx和Date之间是有一个美元符号的"$",好像显示不出来。看不到的话,就把代码改一下。已经上传了好几次,都是 ...
多谢帮忙。时间确实没问题了。但想参照下面的程序,将xx转换为xts对象,就失败了。
  1. library(xts)
  2. data(sample_matrix)
  3. head(sample_matrix)
  4.                         Open      High          Low       Close
  5. 2007-01-02 50.03978 50.11778 49.95041 50.11778
  6. 2007-01-03 50.23050 50.42188 50.23050 50.39767
  7. 2007-01-04 50.42096 50.42096 50.26414 50.33236
  8. 2007-01-05 50.37347 50.37347 50.22103 50.33459
  9. 2007-01-06 50.24433 50.24433 50.11121 50.18112
  10. 2007-01-07 50.13211 50.21561 49.99185 49.99185
  11. sample.xts <- as.xts(sample_matrix, descr='my new xts object')
  12. class(sample.xts)
  13. [1] "xts" "zoo"
复制代码
延续您的代码,我把最后一行改为:
  1. as.xts(xx)
复制代码
错误信息为:
误于as.POSIXlt.character(x, tz, ...) :
  character string is not in a standard unambiguous format

是哪儿出了问题呢?

使用道具

8
jiangbeilu 学生认证  发表于 2014-11-27 19:45:57 |只看作者 |坛友微信交流群
你转化成矩阵之后,时间都没有一个变量名,很明显要出错的。

使用道具

9
andyhwang512 发表于 2014-11-27 20:13:56 |只看作者 |坛友微信交流群
jiangbeilu 发表于 2014-11-27 19:45
你转化成矩阵之后,时间都没有一个变量名,很明显要出错的。
确实。太不认真了,问题已经解决。十分感谢。不过没太明白您说的时间缺少变量名的意思,不是“Date”?我用的代码是:
  1. xx.xts = xts(xx[,c(2:4)], order.by = xx[,1])
复制代码

使用道具

10
jiangbeilu 学生认证  发表于 2014-11-27 20:31:31 |只看作者 |坛友微信交流群
我想知道x[,1]是什么?
因为你要用as.xts转变成时间序列数据,首先系统要识别哪个是时间变量,你贴出来的数据,如果时间是第一列的话,那么没有变量名,怎么转化?
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
胡老 + 5 + 5 + 5 精彩帖子

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-9 06:13