在撰写本文时:仍然是一个错误,请参阅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