#r #yahoo-finance #yahoo-api #tidyquant
Вопрос:
Я хотел бы получить финансовые данные от Yahoo с помощью tidyquant
пакета (или любого другого пакета).
Для получения цен закрытия Microsoft (индекс: MSFT) следующий код работает нормально:
#load packages
library(tidyquant)
#acquire monthly average stock prices
getSymbols("MSFT", from = "2000-08-01", to = "2021-07-31", src = 'yahoo', periodicity = 'daily')
output <- aggregate(MSFT$MSFT.Close, list(format(index(MSFT), "%Y-%m")), mean)
colnames(output) <- c('ClosingPrice')
#create time series for closing stock prices
price = ts(output$ClosingPrice, frequency=12, start=c(2000,08))
summary(price)
Однако для получения цен на сырую нефть (индекс: CL=F) это не работает, так как индекс содержит специальный символ. Более конкретно, я получаю сообщение об ошибке здесь:
#acquire monthly average stock prices
getSymbols("CL=F", from = "2000-08-01", to = "2021-07-31", src = 'yahoo', periodicity = 'daily')
output <- aggregate(CL=F$CL=F.Close, list(format(index(MSFT), "%Y-%m")), mean)
У кого-нибудь есть идея, как обойти эту проблему? Большое спасибо!
Ответ №1:
Имена объектов со специальными символами могут быть закавычены. Кроме того, если есть NA
значения, укажите na.rm = TRUE
вместе с na.action = NULL
как aggregate
можно удалить всю строку, если она есть NA
в любом из столбцов
out <- aggregate(`CL=F` #r #yahoo-finance #yahoo-api #tidyquant
Вопрос:
Я хотел бы получить финансовые данные от Yahoo с помощьюtidyquant
пакета (или любого другого пакета). Для получения цен закрытия Microsoft (индекс: MSFT) следующий код работает нормально:#load packages library(tidyquant) #acquire monthly average stock prices getSymbols("MSFT", from = "2000-08-01", to = "2021-07-31", src = 'yahoo', periodicity = 'daily') output <- aggregate(MSFT$MSFT.Close, list(format(index(MSFT), "%Y-%m")), mean) colnames(output) <- c('ClosingPrice') #create time series for closing stock prices price = ts(output$ClosingPrice, frequency=12, start=c(2000,08)) summary(price)
Однако для получения цен на сырую нефть (индекс: CL=F) это не работает, так как индекс содержит специальный символ. Более конкретно, я получаю сообщение об ошибке здесь:
#acquire monthly average stock prices getSymbols("CL=F", from = "2000-08-01", to = "2021-07-31", src = 'yahoo', periodicity = 'daily') output <- aggregate(CL=F$CL=F.Close, list(format(index(MSFT), "%Y-%m")), mean)
У кого-нибудь есть идея, как обойти эту проблему? Большое спасибо!
Ответ №1:
Имена объектов со специальными символами могут быть закавычены. Кроме того, если есть
NA
значения, укажитеna.rm = TRUE
вместе сna.action = NULL
какaggregate
можно удалить всю строку, если она естьNA
в любом из столбцовCL=F.Close`, list(format(index(`CL=F`), "%Y-%m")),
mean, na.rm = TRUE, na.action = NULL)
-выход
> head(out) 2000-08 32.54571 2000-09 33.87100 2000-10 32.97318 2000-11 34.26450 2000-12 28.35500 2001-01 29.26667 > tail(out) 2021-02 59.06105 2021-03 62.35739 2021-04 61.70381 2021-05 65.15700 2021-06 71.35273 2021-07 72.43048
Комментарии:
1. Большое спасибо! Не могли бы вы кратко объяснить разницу между обычными кавычками и обратными цитатами?
2.@natalieee, если проверишь
?Quotes
Backticks are used for non-standard variable names.
. Допустимые имена имеют подчеркивание наряду с буквенно-цифровыми символами. Объекты, начинающиеся с цифр, также являются нестандартными3. Ладно, твое здоровье.. узнал что-то новое!