首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子集数据getSymbols量化

子集数据getSymbols量化
EN

Stack Overflow用户
提问于 2019-10-09 11:44:03
回答 2查看 467关注 0票数 0

子集数据,例如前一年的所有数据,并存储为新的对象。

代码语言:javascript
复制
mtdl <- na.omit(getSymbols("MTDL.JK", auto.assign = F, src = "yahoo", periodicity = "weekly"))

week.year.mtdl <- mtdl %>%
  filter(DATE >= as.Date("2018-01-01") & DATE <= as.Date("2018-12-31"))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-09 12:13:31

如果您想使用dplyr,这里有几种方法可以解决这个问题。

1将xts转换为data.frame

代码语言:javascript
复制
df_mtdl <- data.frame(date = index(mtdl), coredata(mtdl))
week.year.mtdl <- df_mtdl %>%
  filter(date >= as.Date("2018-01-01") & date <= as.Date("2018-12-31"))

 head(week.year.mtdl)
        date MTDL.JK.Open MTDL.JK.High MTDL.JK.Low MTDL.JK.Close MTDL.JK.Volume MTDL.JK.Adjusted
1 2018-01-01          650          650         620           630          78200         609.6684
2 2018-01-08          630          650         610           610         291800         590.3138
3 2018-01-15          610          750         600           700        9390700         677.4093
4 2018-01-22          700          730         640           700        6816200         677.4093
5 2018-01-29          700          745         685           685         119900         662.8934
6 2018-02-05          695          715         630           635        1533000         614.5070

2使用tidyquant。这将返回一个tibble而不是一个xts对象。Tidyquant是建立在quantmod和许多其他软件包之上的。

代码语言:javascript
复制
library(tidyquant)

tq_mtdl <- tq_get("MTDL.JK", complete_cases = TRUE, periodicity = "weekly")

week.year.mtdl <- tq_mtdl %>%
  filter(date >= as.Date("2018-01-01") & date <= as.Date("2018-12-31"))

head(week.year.mtdl)
# A tibble: 6 x 7
  date        open  high   low close   volume adjusted
  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
1 2018-01-04   645   645   620   625   137000     605.
2 2018-01-11   620   660   600   645  1460000     624.
3 2018-01-18   645   750   635   660 13683700     639.
4 2018-01-25   680   745   665   685  1359700     663.
5 2018-02-01   700   715   675   700   922200     677.
6 2018-02-08   695   695   630   690   673700     668.

  1. 或使用timetk包(用作tidyquant的一部分)或tsbox将数据从xts转换为data.frame或tibble.

票数 0
EN

Stack Overflow用户

发布于 2019-10-09 12:37:58

这将给出xts对象的2018点。

代码语言:javascript
复制
mtdl["2018"]

所有这些工作都是有效的:

代码语言:javascript
复制
subset(mtdl, time(.) >= "2018-01-01" & time(.) <= "2018-12-31")

subset(mtdl, start = "2018-01-01", end = "2018-12-31")

window(mtdl, start = "2018-01-01", end = "2018-12-31")

dates <- seq(as.Date("2008-01-01"), as.Date("2008-12-31"), "day")
window(mtdl, dates)

mtdl[dates] # dates is from above

mtdl[ format(time(mtdl), "%Y") == 2018 ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58303381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档