Я пытаюсь вычислить конкретное квартильное число (в этом примере Q2) данных столбца с положительным значением открытия разрыва списка акций.
Я пытаюсь объяснить вам мой подход:
Загрузить мой список тикеров из 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]))
У меня есть следующая функция, которая отлично работает для вычисления квартилей столбца (Stock_name.Postitivegap)и разделить их на соответствующий квартильный ранг:
Posgapqrank <- 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$posgapqrank <- as.integer(cut(x[, grep(".Positivegap", colnames(x))],quantile(x[,grep(".Positivegap",colnames(x))],probs=0:4/4),include.lowest=TRUE))
x <- setNames(x, column_names)
return(x)
}
Теперь я хотел бы, чтобы функция вычисляла конкретный квантиль того же столбца исходных данных, ".Positivegap", то есть Q2
Дляс этой целью я ввел 0.25 в функции квартиля, но получаю ошибку ... какая-нибудь помощь здесь?
Q2 <- function(x) {
stock_name <- stringi::stri_extract(names(x)[1], regex = "^[A-Z]+")
stock_name <- paste0(stock_name, ".Q2")
column_names <- c(names(x), stock_name)
x$gapq2 <- as.integer(quantile(x[,grep(".Positivegap",colnames(x))],0.25)))
x <- setNames(x, column_names)
return(x)
}
Большое спасибо за любой комментарий.
Давайте сделаем это проще и начнемс менее сложным примером
getSymbols("SQ", from="2018-01-01", src="yahoo")
quantile(SQ$SQ.Volume, 0.25)
#How do I ad a new column to the SQ dataset with the Q2 volume data for each day?