Я пытаюсь создать таблицу очищенных веб-данных, используя символы числового тикера с помощью запроса, который извлекает данные о цене и скидках за 1 год с веб-сайта хоста для определенного фонда.
У меня правильные страницы запросов, но цикл, который я пытаюсь выполнить, поочередно захватывает ценовую историю каждой компании, а затем выполняет несколько довольно простых вычислений с ней, прежде чем проиндексировать результат для соответствующего тикера, а затем связать каждый из них. результаты последовательного фонда вместе в большую таблицу меня вешают.
Вот мой пример сценария, если кто-то может определить проблему и предложить решение:
library(jsonlite)
library(rvest)
library(dplyr)
library(stringr)
library(PerformanceAnalytics)
library(lubridate)
tickers2 <- c("PMX", "MFM", "CEF", "JLS","CXE","BHV")
tickers2 <- paste0("https://www.cefconnect.com/api/v3/pricinghistory/",tickers2,"/1Y")
lst_scraped_data <- lapply(tickers2, FUN=function(URLLink){
url <-URLLink
page<-html_session(url)
json3<-readBin(page$response$content, what="json")
df15 <-fromJSON(json3)
df15 <- data.frame(df15)
# Attempt to Manually Calculate the first tables 52 Week Values
test4 <- xts(df15[2:4],mdy(df15$Data.PriceHistory.DataDateDisplay))
colnames(test4) <- c("NAV Price","Discount %","Share Price")
obs <- dim(test4)[1]
cur <- tail(test4,n=1)
WeekMean <- tail(apply(test4, 2, function(x){apply.rolling(x, FUN="mean", width=dim(test4)[1])}),n=1)
WeekMean <- data.frame(round(WeekMean,digits=2))
WeekMin <- tail(apply(test4, 2, function(x){apply.rolling(x, FUN="min", width=dim(test4)[1])}),n=1)
WeekMin <- data.frame(round(WeekMin,digits=2))
WeekMax <- tail(apply(test4, 2, function(x){apply.rolling(x, FUN="max", width=dim(test4)[1])}),n=1)
WeekMax <- data.frame(round(WeekMax,digits=2))
complete <- data.frame(rbind(cur,WeekMean,WeekMax,WeekMin))
row.names(complete) <- c("Current","Year Avg","Year High","Year Low")
complete2 <- data.frame(cbind(complete[,3],complete[,1],complete[,2]))
colnames(complete2) <- c('Share_Price',"NAV","Premium/Discount_%")
rownames(complete2)[1] <- "Current"
Ticker <- str_replace_all(URLLink,pattern="https://www.cefconnect.com/api/v3/pricinghistory/",replacement = "")
Ticker <- str_replace_all(URLLink,pattern="/1Y",replacement = "")
Checker = data.frame(df15,Ticker)
})
df13 <- do.call(rbind, lst_scraped_data)
В идеале конечный результат должен выглядеть примерно так для каждого тикера:
Share_Price NAV Premium/Discount_% Ticker
Current 11.52 10.45 10.24 PMX
WeekMean 11.32 10.66 6.19 PMX
WeekMax 11.78 10.95 11.33 PMX
WeekMin 10.81 10.35 0.65 PMX
Заполненная таблица будет состоять из привязки выходных данных выше для каждого тикера в цикле. Спасибо !!!