【发布时间】:2019-02-27 16:23:33
【问题描述】:
在社区的帮助下,我创建了从 .csv 文件列表下载多个代码的代码。
我的下一步是为 Volume 数据创建一个四分位数排名的列。我的方法有什么问题?
这是我的方法:
从 .csv 文件加载我的代码列表,创建一个包含所有代码的列表。
library(quantmod)
Tickers <- read.csv("nasdaq_tickers_list.csv", stringsAsFactors = FALSE)
getSymbols(Tickers$Tickers,from="2018-08-01", src="yahoo" )
stock_data = sapply(.GlobalEnv, is.xts)
all_stocks <- do.call(list, mget(names(stock_data)[stock_data]))
将 Volume 列数据转换为四分位数的功能?怎么了?
Volume_q_rank <- function(x) {
stock_name <- stringi::stri_extract(names(x)[1], regex = "^[A-Z]+")
stock_name <- paste0(stock_name, ".Volqrank")
column_names <- c(names(x), stock_name)
x$volqrank <-as.integer(cut(quantmod::Vo(x),
quantile(x,probs=0:4/4),include.lowest=TRUE))
}
计算库存量列的四分位数并将它们添加到数据中
all_stocks <- lapply(all_stocks, Volume_q_rank)
我的函数出了什么问题?
当我运行该函数时,出现以下错误:
Error in quantile.default(coredata(x), ...) :
missing values and NaN's not allowed if 'na.rm' is FALSE
感谢您的任何意见。
【问题讨论】:
标签: r function quantmod quantile