首页 > 解决方案 > R使用地图功能加入多个时间序列

问题描述

我在使用地图功能加入时间序列数据帧时遇到问题。我有 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 个 clomun:日期和收盘价(收盘价)。例如:数据框“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.

现在我想使用地图功能按日期将它们全部加入一个数据帧:

lst1 <- mget(ls(pattern = "USD"))
df <- map(.x = lst1,.f = full_join(by="Date"))

但 ist 不起作用:

Error in UseMethod("full_join") : 
no applicable method for 'full_join' applied to an object of class "character"

有人可以帮助我吗?

标签: rjoinmap-function

解决方案


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.

此外,在 lst1(您拥有的)中的 mget 结果中,没有名为Date Creating a lst1 tibble with Date Column 的列:

DateVec=c("2015-12-31")
map(lst1, function(x) {full_join(tibble(x,Date=DateVec),head(BTC.USD),by="Date")})

推荐阅读