Предупреждение об ошибке при использовании функции getSymbols в R

#r #quantmod

Вопрос:

Я пытаюсь получить данные о биткоинах от yahoo finance, используя следующий код:

 getSymbols("BTC-USD",from= "2020-01-01",to="2020-12-31",warnings=FALSE,auto.assign = TRUE)
BTC-USD=BTC-USD[,"BTC-USD.Adjusted"]
 

Однако я получаю следующую ошибку:

Предупреждающее сообщение:

 BTC-USD contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
 

Как я могу это исправить?

Спасибо.

Комментарии:

1. Что именно вы подразумеваете под «исправлением» в данном случае? Вы просто хотите подавить сообщение об ошибке? Вы хотите вменить недостающие значения? Вы хотите добавить отсутствующие значения из другого источника? Вы уверены, что пропущенные значения вообще являются проблемой в вашем случае?

2. Сообщение о пропущенных значениях является предупреждением, а не ошибкой. Вы можете опустить использование NA na.omit(`BTC-USD`) .

3. Здравствуйте, я бы хотел заменить их на 0

Ответ №1:

У вас есть первая проблема, которая заключается в том, что вы пытаетесь присвоить недопустимый символ. Используйте _ вместо - этого оператор вычитания. Если вы действительно этого хотите - , вы можете использовать обратные ссылки вокруг символа.

Затем вы можете использовать is.na , чтобы найти NA значения и заменить их на 0.

 library(quantmod)
getSymbols("BTC-USD",from= "2020-01-01",to="2020-12-31",warnings=FALSE,auto.assign = TRUE)
BTC_USD <- `BTC-USD`[,"BTC-USD.Adjusted"]
BTC_USD[is.na(BTC_USD)] <- 0

BTC_USD[100:110,]
#           BTC-USD.Adjusted
#2020-04-09         7302.089
#2020-04-10         6865.493
#2020-04-11         6859.083
#2020-04-12         6971.092
#2020-04-13         6845.038
#2020-04-14         6842.428
#2020-04-15         6642.110
#2020-04-16         7116.804
#2020-04-17            0.000
#2020-04-18         7257.665
#2020-04-19         7189.425
 

Лучший план, вероятно, состоит в том, чтобы просто удалить NA строки, а не заменять их на 0:

 BTC_USD <- BTC_USD[!is.na(BTC_USD),]