关于 r:subset data getSymbols quantmod | 珊瑚贝

subset data getSymbols quantmod


子集数据,例如上一年度并存储为新对象。

1
2
3
4
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”))


这将为 xts 对象提供 2018 分

1
mtdl[“2018”]

所有这些也都有效:

1
2
3
4
5
6
7
8
9
10
11
12
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 ]


如果你想使用 dplyr,这里有一些方法可以解决这个问题。

1 将 xts 转换为 data.frame

1
2
3
4
5
6
7
8
9
10
11
12
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 和许多其他软件包之上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.

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

  • 来源:https://www.codenong.com/58303381/

    微信公众号
    手机浏览(小程序)

    Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9777.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
    0
    分享到:
    没有账号? 忘记密码?