2016-08-17 3 views
0

Ich habe die Daten wie folgt.Die letzten 100 Werte eines ts Objekts erhalten in R

cotton <- structure(list(V1 = c(52L, 49L, 49L, 44L, 47L, 52L, 45L, 51L, 
           54L, 57L, 67L, 71L, 66L, 65L, 75L, 66L, 70L, 70L, 69L, 71L, 70L, 
           72L, 73L, 73L, 75L, 69L, 77L, 75L, 71L, 74L, 69L, 71L, 70L, 78L, 
           74L, 72L, 74L, 72L, 73L, 73L, 72L, 70L, 73L, 71L, 76L, 79L, 68L, 
           79L, 76L, 78L, 78L, 78L, 75L, 75L, 73L, 78L, 78L, 78L, 81L, 80L, 
           79L, 84L, 82L, 81L, 80L, 83L, 77L, 81L, 82L, 83L, 82L, 86L, 78L, 
           82L, 81L, 79L, 79L, 80L, 75L, 78L, 78L, 77L, 80L, 80L, 80L, 82L, 
           81L, 84L, 83L, 82L, 84L, 81L, 80L, 83L, 87L, 81L, 84L, 84L, 82L, 
           84L, 83L, 84L, 82L, 80L, 78L, 84L, 84L, 84L, 82L, 84L, 79L, 82L, 
           79L, 79L, 72L, 73L, 78L, 82L, 83L, 81L, 77L, 75L, 70L, 71L, 66L, 
           59L, 57L, 62L, 60L, 58L, 59L, 56L, 53L, 55L, 56L, 57L, 62L, 58L, 
           56L, 60L, 63L, 66L, 71L, 74L, 70L, 74L, 75L, 74L, 77L, 79L, 76L, 
           77L, 79L, 80L, 81L, 78L, 77L, 78L, 77L, 75L, 71L, 66L, 63L, 57L, 
           55L, 55L, 55L, 54L, 57L, 57L, 53L, 54L, 60L, 63L, 65L, 64L, 68L, 
           74L, 73L, 74L, 75L, 73L, 77L, 75L, 76L, 68L, 73L, 49L, 69L, 80L, 
           82L, 78L, 71L, 70L, 73L, 71L, 68L, 72L, 70L, 43L, 72L, 81L, 81L, 
           80L, 73L, 73L, 72L, 68L, 71L, 73L, 67L, 43L, 68L, 69L, 77L, 78L 
)), .Names = "V1", class = "data.frame", row.names = c(NA, -216L 
)) 

Ich möchte die letzten 100 Werte dieses Datenrahmens analysieren. Ich benutze die Funktion ts(), um sie in ein Zeitreihenobjekt mit einem bekannten Anfang und einer bekannten Häufigkeit zu konvertieren. Aber wenn ich die letzten 100 Werte wie folgt nehme,

cotton.ts <- ts(cotton, start = 2000, frequency = 12) 
if(length(cotton.ts) > 100){ 
     cotton.ts <- cotton.ts[(length(cotton.ts)-99):length(cotton.ts)] 
    } 

cotton.ts wird ein Vektor. Ich brauche eine Zeitreihe, aber Häufigkeit und Startjahr ändern sich immer. Ich möchte also nicht jedes Jahr einen neuen Startjahr und -monat finden, um es wieder zu einer Zeitreihe zu machen. Gibt es einen Weg dies zu tun ohne die Zeit zu verlieren?

+0

Ob Zeitreihe oder Datenrahmen, 'tail (Baumwolle, 100)' tun soll. – RHertel

+0

@RHertel Es gibt mir die letzten 100 Werte, aber nicht als eine Zeitreihe. –

Antwort

1

Ich möchte kein neues Startjahr und Monat die ganze Zeit finden, um es wieder Zeitreihe zu machen. Gibt es einen Weg dies zu tun ohne die Zeit zu verlieren?

Ich fürchte, Sie müssen dies tun. Es ist sowieso nicht schwierig. Im Folgenden ist eine automatische Weise

u <- length(cotton.ts) - 99 
ts(cotton.ts[u:length(cotton.ts)], start = c(2000 + floor(u/12), u %% 12), 
    frequency = 12) 

#  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
#2009         78 82 83 81 
#2010 77 75 70 71 66 59 57 62 60 58 59 56 
#2011 53 55 56 57 62 58 56 60 63 66 71 74 
#2012 70 74 75 74 77 79 76 77 79 80 81 78 
#2013 77 78 77 75 71 66 63 57 55 55 55 54 
#2014 57 57 53 54 60 63 65 64 68 74 73 74 
#2015 75 73 77 75 76 68 73 49 69 80 82 78 
#2016 71 70 73 71 68 72 70 43 72 81 81 80 
#2017 73 73 72 68 71 73 67 43 68 69 77 78 

Beachten Sie die Verwendung von start = c(a, b) in ts().

0

Die letzten 100 Werte eines Wertes, den Sie mit der Funktion tail() erhalten können. vielleicht wird es auch für ts arbeiten:

tail(data, n=100) 

EDIT

getTime(head(cotton.ts,u)) 

wo X - Ihr Zeitreihen-Objekt, n - die Position des Zeitpunkts. Die Funktion, die Sie im TimeSeries-Paket in R.

finden können, scheint es zu funktionieren.

+0

nein. Wurde wieder zum Ganzzahlvektor gemacht. –

+0

Haben Sie versucht, die getTime() aus? Als zweites Argument können Sie die Position in der Reihe angeben. –

+0

Nein. Ich weiß es nicht. Können Sie Ihre Antwort bearbeiten? –

1

Eine andere mögliche Lösung:

#convert cotton.ts into xts object 
cotton.xts <- as.xts(coredata(cotton.ts), order.by = timeBasedSeq('2000/2017/m')) 

Jetzt können Sie die seine Funktion last verwenden, die die letzte n periods zurückgibt. Zum Beispiel die letzten 7 Monate zu erhalten:

> xts::last(cotton.xts,7) 
     V1 
Jun 2017 73 
Jul 2017 67 
Aug 2017 43 
Sep 2017 68 
Oct 2017 69 
Nov 2017 77 
Dec 2017 78 
Verwandte Themen