2017-04-20 1 views
1

Daten zurück:cumsum in einem xts für Werte, die bereits Summe aber jedes Jahr

 [,1] 
2015-03-17 1 
2015-03-18 2 
2015-03-19 4 
{cont} 
2015-12-31 200 
2016-01-01 0 
2016-12-02 3 
2016-12-03 9 

Da dieser XTS hat bereits die laufende Summe innerhalb von Jahren, ich wollte, dass die laufende Summe accross Jahre berechnen.

So sieht es aus wie

  Value ## cumsum(value) ## not what I want 
2015-03-17 1  # 1 
2015-03-18 2  # 3 
2015-03-19 4  # 7 
{cont}    # {cont} 
2015-12-31 200  # x, where x is much bigger than 200 
2016-01-01 200  # x + x 
2016-01-02 203  # 3x + 3 
2016-12-03 209  # 4x + 3 + 9 

ich mit cumsum und mutate versucht, aber es kehrte die laufende Summe und änderte sich seit Jahren nicht mehr.

+0

Ich verstehe Ihre Frage nicht. Ihre Daten haben eine laufende Summe, die zu Beginn jedes Kalenderjahres bei Null beginnt. Sie wollen die laufende Summe über die gesamte Zeitspanne, was 'cumsum (x)' tut. Aber du sagst, dass das nicht funktioniert, weil "es die laufende Summe zurückgegeben hat und sich seit Jahren nicht geändert hat", was genau so klingt, wie du es gesagt hast. –

+0

Vielleicht benutze ich "Cumsum" falsch, aber es hält eine laufende Summe, wo ich nur will 2015 Gesamt (der Wert zur Verfügung gestellt am 31.12) zu jedem Wert im Jahr 2016 hinzugefügt –

+0

Ah, ich denke, ich verstehe. Zum Beispiel möchten Sie, dass 'c (0: 5, 0: 5)' 'c (0: 5, 0: 5 + 5)' wird. –

Antwort

0

Jetzt, da ich Ihre Frage verstehe, hier ist eine Lösung. Die Kommentare erklären hoffentlich, was getan wird.

# Merge original data with year-end values, filling with zeros 
y <- merge(x, year.end = apply.yearly(x, last), fill = 0) 

# Lag year-end values, so they appear at the start of the following year 
y$year.end <- lag(y$year.end) 

# Set first NA to zero (so cumsum results aren't all NA) 
y$year.end[1] <- 0 

# Take a cumulative sum of the year-end values, so they increase each year 
y$year.end <- cumsum(y$year.end) 

# Add two columns to create running total 
y$running.total <- rowSums(y) 
Verwandte Themen