![](/img/trans.png)
[英]Tidyquant tq_get and tq_transmute: Warning message "missing values removed from data"
[英]How to get OHLC monthly high and low data using tq_transmute from tidyquant package in R
我是分析時間序列數據的新手,我正在尋找一些幫助從一些 OHLC 數據中拉出每月高價和低價的方法。 當我嘗試匯總每月的開盤價、最高價、最低價和收盤價時,只會拉取每個月最后一天的值,而不是每個月的最高(最高)和最低(最低)。 任何幫助是極大的贊賞。
library(tidyquant)
library(tidyverse)
amzn.prices <- tq_get("AMZN", get = "stock.prices", from = '2010-12-31', to = "2013-12-31")
monthly.amzn <- tq_transmute(amzn.prices, mutate_fun = to.monthly)
目前,它只是拉動每個月的最后一次觀察。 相反,我想要第一次開盤、最高最高價、最低最低價、最后一次收盤價和總交易量。
在撰寫本文時:仍然是一個錯誤,請參閱github 問題 148 。
一種可能的解決方法,使用 tidyr、timetk 和 purrr。 使用 timetk 將數據轉換為 xts 格式,將數據轉換為每月(或任何其他時間段)並轉換回 data.frame 格式。 包括來自 tidyr 的 nest 和 unnest 以及來自 purrr 的 map。
即使對於多個股票代碼,下面的代碼也可以解決您的問題。
library(tidyquant)
library(dplyr)
library(tidyr)
library(timetk)
amzn.prices <- tq_get("AMZN", get = "stock.prices", from = '2010-12-31', to = "2013-12-31")
monthly.amzn <- amzn.prices %>%
group_by(symbol) %>%
nest() %>%
mutate(data = purrr::map(data, function(x) x %>%
select(date, Open = open, High = high, Low = low, Close = close, Volume = volume) %>%
tk_xts(x, select = c(Open, High, Low, Close, Volume), date_var = date) %>%
to.monthly %>%
tk_tbl)) %>%
unnest(data) %>%
rename_with( ~ tolower(gsub("..", "", .x, fixed = T))) %>%
rename(date = index)
# A tibble: 37 x 7
# Groups: symbol [1]
symbol date open high low close volume
<chr> <yearmon> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AMZN dec 2010 182. 182. 180. 180 3451900
2 AMZN jan 2011 181. 192. 167. 170. 113611300
3 AMZN feb 2011 171. 191. 170. 173. 95776400
4 AMZN mrt 2011 174. 182. 161. 180. 118979100
5 AMZN apr 2011 182. 198. 175. 196. 116749400
6 AMZN mei 2011 197. 206. 191. 197. 106274500
7 AMZN jun 2011 196. 206. 182. 204. 95563700
8 AMZN jul 2011 206. 227. 204. 223. 92808500
9 AMZN aug 2011 225 227. 177. 215. 155194700
10 AMZN sep 2011 215. 244 204. 216. 143623300
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.