Если вы не возражаете против использования пакета, пакет timetk
может помочь. Смотрите виньетки с пакетом для получения дополнительной информации.
library(quantmod)
library(magrittr) # for the pipe %>% function
library(timetk)
out <- getSymbols("^GSPC", auto.assign = F) # get the data
out_padded <- out %>%
tk_tbl() %>% # transform into tibble
pad_by_time() %>% # add the missing records
tk_xts() # transform back into xts format.
# ignore warnings
head(out_padded)
GSPC.Open GSPC.High GSPC.Low GSPC.Close GSPC.Volume GSPC.Adjusted
2007-01-03 1418.03 1429.42 1407.86 1416.60 3429160000 1416.60
2007-01-04 1416.60 1421.84 1408.43 1418.34 3004460000 1418.34
2007-01-05 1418.34 1418.34 1405.75 1409.71 2919400000 1409.71
2007-01-06 NA NA NA NA NA NA
2007-01-07 NA NA NA NA NA NA
2007-01-08 1409.26 1414.98 1403.97 1412.84 2763340000 1412.84
Конечно, вы можете сделать это также с tidyquant
и tidyr
.
library(tidyquant)
out_tq <- tq_get("^GSPC")
out_tq_padded <- pad_by_time(out_tq) %>%
tidyr::fill(symbol) # using fill from tidyr to fill the NA's in the symbol column.
out_tq_padded
# A tibble: 3,763 x 8
symbol date open high low close volume adjusted
<chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ^GSPC 2010-01-04 1117. 1134. 1117. 1133. 3991400000 1133.
2 ^GSPC 2010-01-05 1133. 1137. 1130. 1137. 2491020000 1137.
3 ^GSPC 2010-01-06 1136. 1139. 1134. 1137. 4972660000 1137.
4 ^GSPC 2010-01-07 1136. 1142. 1131. 1142. 5270680000 1142.
5 ^GSPC 2010-01-08 1141. 1145. 1136. 1145. 4389590000 1145.
6 ^GSPC 2010-01-09 NA NA NA NA NA NA
7 ^GSPC 2010-01-10 NA NA NA NA NA NA
8 ^GSPC 2010-01-11 1146. 1150. 1142. 1147. 4255780000 1147.
9 ^GSPC 2010-01-12 1144. 1144. 1132. 1136. 4716160000 1136.
10 ^GSPC 2010-01-13 1137. 1148. 1133. 1146. 4170360000 1146.
# ... with 3,753 more rows