R Объединение нескольких временных рядов с помощью функции карты
У меня есть проблема, чтобы объединить временные ряды-фреймы данных с функцией map. У меня есть 25 информационных фреймов с данными временных рядов криптовалют.
ls(pattern="USD")
[1] "ADA.USD" "BCH.USD" "BNB.USD" "BTC.USD" "BTG.USD" "DASH.USD" "DOGE.USD" "EOS.USD" "ETC.USD" "ETH.USD" "IOT.USD"
[12] "LINK.USD" "LTC.USD" "NEO.USD" "OMG.USD" "QTUM.USD" "TRX.USD" "USDT.USD" "WAVES.USD" "XEM.USD" "XLM.USD" "XMR.USD"
[23] "XRP.USD" "ZEC.USD" "ZRX.USD"
Каждый объект - это фрейм данных, который обозначает криптовалюту, выраженную в долларах США. И на каждом фрейме данных есть 2 кломуна: дата и закрытие (цена закрытия). Например: датафрейм "BTC.USD" обозначает биткойн в долларах США:
head(BTC.USD)
# A tibble: 6 x 2
Date Close
1 2015-12-31 430.
2 2016-01-01 434.
3 2016-01-02 434.
4 2016-01-03 431.
5 2016-01-04 433.
Теперь я хочу объединить их все в один фрейм данных по дате с помощью функции map:
lst1 <- mget(ls(pattern = "USD"))
df <- map(.x = lst1,.f = full_join(by="Date"))
Но это не работает:
Error in UseMethod("full_join") :
no applicable method for 'full_join' applied to an object of class "character"
Кто-нибудь может мне помочь?
1 ответ
Результатом mget является список символов, поэтому full_join
терпит неудачу с ошибкой.
Попробуй это:
map(lst1, function(x) {full_join(tibble(x),head(BTC.USD),by="Date")}) # Full join might fail becuase lst1 has no column called Date.
Кроме того, в результате mget в lst1 (который у вас есть) нет столбца с именем Date
Создание тиббла lst1 со столбцом даты:
DateVec=c("2015-12-31")
map(lst1, function(x) {full_join(tibble(x,Date=DateVec),head(BTC.USD),by="Date")})