我对R很陌生,所以我希望我不要让任何人失望。将在线搜索中的片段放在一起,并使用quantmode和purr包,我有下面的代码来创建一个名为stocks的xts数据框架
symbols <- c("RYCVX","AJA","IEMG")
start <- as.Date("2006-06-22")
end <- as.Date("2020-07-30")
# collect adjusted column of all symbols in one matrix
stocks <- getSymbols(symbols,src = "yahoo", from = start, to = end,
auto.assign = TRUE,
warnings = FALSE) %>%
map(~Ad(get(.))) %>%
reduce(merge) %>%
`colnames<-`(symbols)这是每天,但我想有一个每月的矩阵,但仍然保留NA字段。我试过这行代码:
mstocks <- to.monthly(stocks, indexAt = "last", OHLC = FALSE)但是,我的结果数据框架被缩小到数据数量最少的符号,因为省略了任何丢失值的行,所以我结束了丢失历史上更丰富的符号上的数据。
是否有办法保留丢失的值,并拥有每月数据,就像我的日常数据一样,有一个符号是NA的行
所以我得到的是:
RYCX AJA IEMG
2018-12-30 29.3045 4.5523 33.2045 <- first date all symbols have data
...
2020-07-30 34.2344 5.6664 12.2234我现在得到的是沃尔茨的帮助:
V1
2006-06-30 NA
...
2020-07-29 52.66000我需要的是:
RYCX AJA IEMG
2006-06-30 29.3045 NA NA
....
2020-07-30 34.2344 5.6664 12.2234所有的价格都是捏造的
发布于 2020-08-01 16:30:41
我假设每月的数据,你指的是调整后的收盘价在这个月的最后一个交易日。简单地说,我使用了auto.assign = FALSE,以便getSymbols返回xts时间序列对象,而不是将它放在环境中。我还使用了函数setNames,而不是colnames<-(symbols),它可以工作,但有点不透明。若要转换为每月,请使用apply.monthly(last),它取时间序列中每个月的最后一天。返回所有月份的数据,包括在某些时间序列中具有NA的数据。
library(tidyverse)
library(quantmod)
symbols <- c("RYCVX","AJA","IEMG")
start <- as.Date("2006-06-22")
end <- as.Date("2020-07-30")
stocks <- symbols %>% map( ~Ad(getSymbols(.x, src = "yahoo", from = start, to = end,
auto.assign = FALSE,
warnings = FALSE))) %>%
reduce(merge) %>%
setNames(symbols) %>%
apply.monthly(last) 这意味着:
> stocks
RYCVX AJA IEMG
2006-06-30 21.901295 5.810 NA
2006-07-31 21.892862 6.260 NA
2006-08-31 22.643713 18.400 NA
2006-09-29 23.732025 19.250 NA
2006-10-31 25.284351 6.160 NA
2006-11-30 25.908657 6.960 NA
2006-12-29 26.817636 20.900 NAhttps://stackoverflow.com/questions/63201249
复制相似问题