首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >to.period函数保留“缺失值”

to.period函数保留“缺失值”
EN

Stack Overflow用户
提问于 2020-08-01 02:43:53
回答 1查看 207关注 0票数 0

我对R很陌生,所以我希望我不要让任何人失望。将在线搜索中的片段放在一起,并使用quantmode和purr包,我有下面的代码来创建一个名为stocks的xts数据框架

代码语言:javascript
复制
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字段。我试过这行代码:

代码语言:javascript
复制
mstocks <- to.monthly(stocks, indexAt = "last", OHLC = FALSE)

但是,我的结果数据框架被缩小到数据数量最少的符号,因为省略了任何丢失值的行,所以我结束了丢失历史上更丰富的符号上的数据。

是否有办法保留丢失的值,并拥有每月数据,就像我的日常数据一样,有一个符号是NA的行

所以我得到的是:

代码语言:javascript
复制
                    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

我现在得到的是沃尔茨的帮助:

代码语言:javascript
复制
                     V1
2006-06-30           NA
...
2020-07-29        52.66000

我需要的是:

代码语言:javascript
复制
                   RYCX        AJA        IEMG
2006-06-30        29.3045      NA           NA
....
2020-07-30        34.2344     5.6664     12.2234

所有的价格都是捏造的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-01 16:30:41

我假设每月的数据,你指的是调整后的收盘价在这个月的最后一个交易日。简单地说,我使用了auto.assign = FALSE,以便getSymbols返回xts时间序列对象,而不是将它放在环境中。我还使用了函数setNames,而不是colnames<-(symbols),它可以工作,但有点不透明。若要转换为每月,请使用apply.monthly(last),它取时间序列中每个月的最后一天。返回所有月份的数据,包括在某些时间序列中具有NA的数据。

代码语言:javascript
复制
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) 

这意味着:

代码语言:javascript
复制
> 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       NA
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63201249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档