我认为您的原始数据规范有误。首先,将其移出xts
格式,然后再次移回它。
数据
我对xts
对象的创建方式进行了一些更改。我还清理了一些错误的空格。
library(xts)
df <- data.frame(Google = c(100,200,300,400,500,600,700,800),Apple = c(10,20,30,40,50,60,70,80),Audi = c(1,2,3,4,5,6,7,8),BMW = c(1000,2000,3000,4000,5000,6000,7000,8000),AENA = c(50,51,52,53,54,55,56,57))
exposure <- xts(df,order.by = Sys.Date() - 1:8)
map <- data.frame(Company = c("Google","Apple","Audi","BMW","AENA"),Country = c("US","US","GERMANY","SPAIN"),stringsAsFactors = F)
聚合
我使用tbl2xts
转换格式。然后,我们使用dplyr
和tidyr
将数据转换为长格式,将Country加入每个公司,并在Country上进行汇总。然后,我们将其转换回xts
,将数据分散到各个国家/地区。
library(tbl2xts)
library(dplyr)
library(tidyr)
xts_tbl(exposure) %>%
pivot_longer(-date,names_to = "Company") %>%
left_join(map,by = "Company") %>%
group_by(date,Country) %>%
summarize(value = sum(value)) %>%
ungroup() %>%
tbl_xts(spread_by = "Country")
结果
GERMANY SPAIN US
2019-10-28 8008 57 880
2019-10-29 7007 56 770
2019-10-30 6006 55 660
2019-10-31 5005 54 550
2019-11-01 4004 53 440
2019-11-02 3003 52 330
2019-11-03 2002 51 220
2019-11-04 1001 50 110
本文链接:https://www.f2er.com/3157094.html