2017-05-09 1 views
0

J'ai utilisé des objets ts pendant un moment mais pas trop de xts, donc j'essayais de calculer la moyenne, la somme, le dernier, le premier ... (FUN) pour chaque année dans les séries chronologiques économiques. Quand je l'essaye j'ai un résultat bizarre.erreur utilisant apply.yearly dans le package xts. Comment ça marche?

Ceci est un exemple rapide: Considérant x et y comme série mensuelle, pendant deux années consécutives:

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

Puis-je créer un ts objet

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

maintenant je convertir en XTS objet

library(xts) 

serie.xts <- as.xts(serie) 

plot(serie.xts) 

à ce que je vois, la série est correctement créée

serie.xts 

La série semble 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 

Puis vient mon problème

par exemple, je tente d'obtenir la dernière valeur pour chaque année, en ce que je sais est ce que cette fonction ne :

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

mais je reçois ceci:

ene 1990 1 
ene 1991 1 
dic 1991 12 

Je m'y attendais: dic 1990 12 1991 12 dic

Qu'est-ce que je fais mal? Est-ce ainsi que fonctionne cette fonction? Qu'est-ce que cette fonction fait réellement?

Je ne comprends pas quel est ce résultat. S'il vous plaît aider. Et merci d'avoir lu ma question.

R 3.3.3 XTS zoo 0,9 à 7 1.8-0

+0

i essayer, mais aussi me donner le même résultat: 'period.apply (INDEX = extrémités (x = serie.xts, on = "années"), x = serie.xts, FUN = "last") ' –

+1

J'ai essayé votre code, et cela fonctionne très bien pour moi. Je suggère de convertir la classe de votre index de 'yearmon' en' Date' comme ceci 'index (serie.xts) <- as.Date (index (serie.xts))' – sechstein

+0

C'est bizarre. J'essaie dans un autre pc et j'ai le même mauvais résultat. Utilisez-vous la même version? –

Répondre

0

Ce bogue dans XTS qui a été de 0 à 9,7 corrigé dans la version de développement. Exécutez l'une de ces commandes pour installer à partir GitHub:

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

l'appel apply.yearly fonctionnera comme prévu:

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