2017-05-09 1 views
0

Ich habe ts Objekte für eine Weile, aber nicht zu viel XTS, also habe ich versucht, Mittelwert, Summe, Last, zuerst ... (FUN) für jedes Jahr in wirtschaftlichen Zeitreihen zu berechnen. Wenn ich es versuche, habe ich komisches Ergebnis.Fehler mit apply.yearly in XTS-Paket. Wie funktioniert das?

Dies ist ein kurzes Beispiel: Betrachtet man x und y wie monatliche Serie, zwei Jahre in Folge:

x <- 1:12 
y <- 1:12 
serie <- c(x,y) 

Dann erstelle ich eine ts

serie <- ts(serie,1990,,12) 

jetzt i wandeln es in xts Objekt Objekt

library(xts) 

serie.xts <- as.xts(serie) 

plot(serie.xts) 

Soweit ich sehe, ist die Serie ordnungsgemäß erstellt

serie.xts 

Die Serie sieht ok

ene 1990 1 
feb 1990 2 
mar 1990 3 
abr 1990 4 
may 1990 5 
jun 1990 6 
jul 1990 7 
ago 1990 8 
sep 1990 9 
oct 1990 10 
nov 1990 11 
dic 1990 12 
ene 1991 1 
feb 1991 2 
mar 1991 3 
abr 1991 4 
may 1991 5 
jun 1991 6 
jul 1991 7 
ago 1991 8 
sep 1991 9 
oct 1991 10 
nov 1991 11 
dic 1991 12 

Dann kommt mein Problem

zum Beispiel, ich versuche, den letzten Wert für jedes Jahr zu bekommen, so weit ich weiß, das ist, was diese Funktion tun :

apply.yearly(serie.xts,FUN = "last") 

aber ich bekomme diese:

ene 1990 1 
ene 1991 1 
dic 1991 12 

Ich erwartete dies: dic 1990 12 dic 1991 12

Was mache ich falsch? Funktioniert diese Funktion? Was macht diese Funktion eigentlich?

ich verstehe nicht, was dieses Ergebnis ist. Bitte helfen. Und danke, dass du meine Frage gelesen hast.

R 3.3.3 xts 0,9-7 Zoo 1.8-0

+0

ich versuche das, aber mir auch das gleiche Ergebnis: 'period.apply (INDEX = Endpunkte (x = serie.xts, on = "Jahre"), x = serie.xts, FUN = "last") ' –

+1

Ich habe versucht, Ihren Code, und es funktioniert gut für mich. Ich würde vorschlagen, die Klasse Ihres Indexes von 'yearmon' in' Date' umzuwandeln wie diesen 'index (serie.xts) <- as.Date (index (serie.xts))' – sechstein

+0

Das ist komisch. Ich versuche es in einem anderen PC und ich habe das gleiche falsche Ergebnis. Verwenden Sie die gleiche Version? –

Antwort

0

Dies ist ein Fehler in xts 0-9,7, die in der Entwicklungsversion behoben wurde. Führen Sie einen der folgenden Befehle aus GitHub zu installieren:

remotes::install_github("joshuaulrich/xts") 
# or 
devtools::install_github("joshuaulrich/xts") 

Dann wird der apply.yearly Anruf wird wie erwartet:

serie <- ts(c(1:12,1:12),1990,,12) 
library(xts) 
serie.xts <- as.xts(serie) 
apply.yearly(serie.xts, last) 
#   [,1] 
# Dec 1990 12 
# Dec 1991 12