R Объединение нескольких временных рядов с помощью функции карты - PullRequest
0 голосов
/ 22 января 2019

У меня проблема с объединением временных рядов-фреймов данных с функцией 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 Ответ

0 голосов
/ 22 января 2019

Результатом 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")})
...