Project Icon

xts

R语言高性能时间序列数据处理扩展包

xts是R语言的时间序列扩展包,基于zoo类开发,提供高效的时间索引数据结构。它通过合理约束提升性能,保持简单灵活的使用体验。xts支持ISO-8601日期时间索引,具备强大的时间序列聚合和应用功能,广泛应用于金融分析等需要处理大量时间序列数据的领域。

关于

xts 是一个 R 包,它提供了 zoo 类的扩展。zoo 的优势在于其使用简单(与基础 R 函数非常相似)以及整体灵活性(你可以使用任何东西作为索引)。xts 扩展的动机是通过施加合理的限制来提高性能,同时提供一个真正基于时间的结构。

企业版 xts

作为 Tidelift 订阅的一部分提供。

xts 和其他数千个包的维护者正在与 Tidelift 合作,为您用于构建应用程序的开源依赖项提供商业支持和维护。节省时间,减少风险,改善代码健康,同时向您使用的确切依赖项的维护者付费。了解更多。

支持 xts 开发

如果您有兴趣支持 xts 的持续开发和维护,请考虑成为赞助者

安装

当前版本可在 CRAN 上获得,您可以通过以下方式安装:

install.packages("xts")

要安装开发版本,您需要克隆存储库并从源代码构建,或运行以下命令之一:

# 轻量级
remotes::install_github("joshuaulrich/xts")
# 或
devtools::install_github("joshuaulrich/xts")

您需要工具来编译 C、C++ 和 Fortran 代码。请参阅 R 安装和管理手册 中针对您操作系统的相关附录:

入门

您可以使用 xts()as.xts() 创建 xts 对象。

请注意,as.xts() 目前期望日期/时间在矩阵和数据框对象的行名中,或在向量的名称中。您也可以使用 dateFormat 参数来控制名称是否应转换为 DatePOSIXct。详情请参见 help(as.xts.methods)

n <- 10
series <- rnorm(n)

# POSIXct(日期/时间)索引
datetimes <- seq(as.POSIXct("2017-03-27"), length.out = n, by = "days")
library(xts)
x <- xts(series, datetimes)

除了可以像子集矩阵和 zoo 对象一样对 xts 对象进行子集操作外,您还可以使用符合 ISO-8601 标准 的字符串进行子集操作,这是国际公认的表示日期和时间的方式。使用上一个代码块中的数据,这里有一些例子:

# 2017年3月
x["2017-03"]
#                   [,1]
# 2017-03-27  0.25155453
# 2017-03-28 -0.09379529
# 2017-03-29  0.44600926
# 2017-03-30  0.18095782
# 2017-03-31 -1.45539421

# 3月30日至4月2日
x["2017-03-30/2017-04-02"]
#                  [,1]
# 2017-03-30  0.1809578
# 2017-03-31 -1.4553942
# 2017-04-01 -0.4012951
# 2017-04-02 -0.5331497

# 序列开始到4月1日
x["/2017-04-01"]
#                   [,1]
# 2017-03-27  0.25155453
# 2017-03-28 -0.09379529
# 2017-03-29  0.44600926
# 2017-03-30  0.18095782
# 2017-03-31 -1.45539421
# 2017-04-01 -0.40129513

您可以使用 to.period() 函数将单变量序列或开盘-最高-最低-收盘(OHLC)数据聚合成较低频率的 OHLC 序列。还有一些便捷函数用于某些频率(例如 to.minutes()to.daily()to.yearly() 等)。

data(sample_matrix)
x <- as.xts(sample_matrix)
to.period(x, "months")
#              x.Open   x.High    x.Low  x.Close
# 2007-01-31 50.03978 50.77336 49.76308 50.22578
# 2007-02-28 50.22448 51.32342 50.19101 50.77091
# 2007-03-31 50.81620 50.81620 48.23648 48.97490
# 2007-04-30 48.94407 50.33781 48.80962 49.33974
# 2007-05-31 49.34572 49.69097 47.51796 47.73780
# 2007-06-30 47.74432 47.94127 47.09144 47.76719
to.monthly(x)  # 结果具有'yearmon'索引
#           x.Open   x.High    x.Low  x.Close
# 2007年1月 50.03978 50.77336 49.76308 50.22578
# 2007年2月 50.22448 51.32342 50.19101 50.77091
# 2007年3月 50.81620 50.81620 48.23648 48.97490
# 2007年4月 48.94407 50.33781 48.80962 49.33974
# 2007年5月 49.34572 49.69097 47.51796 47.73780
# 2007年6月 47.74432 47.94127 47.09144 47.76719

period.apply()函数允许您对非重叠区间应用自定义函数。您可以使用类似于endpoints()输出的向量来指定区间。与to.period()类似,也有一些便捷函数,如apply.daily()、apply.quarterly()等。

# 每列的月平均值
period.apply(x, endpoints(x, "months"), colMeans)
#                Open     High      Low    Close
# 2007-01-31 50.21140 50.31528 50.12072 50.22791
# 2007-02-28 50.78427 50.88091 50.69639 50.79533
# 2007-03-31 49.53185 49.61232 49.40435 49.48246
# 2007-04-30 49.62687 49.71287 49.53189 49.62978
# 2007-05-31 48.31942 48.41694 48.18960 48.26699
# 2007-06-30 47.47717 47.57592 47.38255 47.46899

#                Open     High      Low    Close
# 2007-01-31 50.21140 50.31528 50.12072 50.22791
# 2007-02-28 50.78427 50.88091 50.69639 50.79533
# 2007-03-31 49.53185 49.61232 49.40435 49.48246
# 2007-04-30 49.62687 49.71287 49.53189 49.62978
# 2007-05-31 48.31942 48.41694 48.18960 48.26699
# 2007-06-30 47.47717 47.57592 47.38255 47.46899

有问题吗?

在Stack Overflow上提出你的问题或在R-SIG-Finance邮件列表上提问(必须订阅才能发帖)。

想要实践经验吗?

- DataCamp上的导入和管理金融数据课程
- DataCamp上的使用xts和zoo操作时间序列课程

贡献

请参阅贡献指南。

另请参阅

- quantmod:量化金融建模框架
- TTR:技术交易规则函数
- zoo:用于规则和不规则时间序列的类

作者

Jeffrey Ryan,Joshua Ulrich
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号