Lägg till en diskret rullande summa i BNP-data
Det är användbart att känna till förändringen från en period till nästa, men ibland vill du veta den totala förändringen sedan årets början. För att skapa den typen av indikator kan du använda mönstret split-lapply-rbind. Processen liknar den som användes för att beräkna månatliga medeltemperaturer i föregående kapitel.
I den här övningen återvänder du till gdp-data som användes tidigare i kapitlet. Förutom de statiska BNP-värdena per kvartal vill du skapa ett mått på BNP-förändringen från ett kvartal till nästa (med diff()) samt en rullande summa av ackumulerad BNP-förändring hittills under året (med split(), lapply() och rbind()).
Den här övningen är en del av kursen
Fallstudie: Analys av tidsseridata för städer i R
Övningsinstruktioner
- Använd
diff()för att beräkna en enkel kvartalsvis förändring igdp. Ange kolumnengdpoch sättlagtill1period (i det här fallet 1 kvartal). Spara resultatet i dittgdp-objekt somquarterly_diff. - Nu när du har ett mått på kvartalsvis BNP-förändring är nästa steg att dela upp
quarterly_diff-data per år medsplit(). I anropet tillsplit()ska du ange kolumnenquarterly_diffigdpoch sätta argumentetftill"years"(med citattecken). - Använd
lapply()på den nyligen delade datan. För att beräkna en kumulativ summa för varje år, sätt argumentetFUNtillcumsum(utan citattecken). - Använd
do.call()för att rbind:a dittgdpchange_ytd-data tillbaka till ett xts-objekt. - Använd slutligen
plot.xts()för att undersöka den ackumulerade BNP-förändringen hittills under året (gdpchange_xts).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Add a quarterly difference in gdp
gdp$quarterly_diff <- diff(___$___, lag = ___, differences = ___)
# Split gdp$quarterly_diff into years
gdpchange_years <- split(___$___, f = "___")
# Use lapply to calculate the cumsum each year
gdpchange_ytd <- lapply(___, FUN = ___)
# Use do.call to rbind the results
gdpchange_xts <- do.call(rbind, ___)
# Plot cumulative year-to-date change in GDP
plot.xts(___, type = "h")