2016-12-23 3 views
1

ich einen Datenrahmen (df) haben, die mit der folgenden Struktur breiten Datensatzes,Anwenden von Zeitreihen-Modelle für jede Zeile

ID 2015/01/01 2015/02/01 2015/03/01 2015/04/01 
A1 42   42  24   32 
A2 22   22  24   32 
A3 12   15  19   22 
A4 8   12  18   24 
  • Ich will Zeitreihenmodell für jede Zeile bauen, so wird es sein N Zeitreihenmodell, wobei N = Anzahl der Zeilen in Datenrahmen

ich müde folgendes:

ts_1 <- ts(df[1:1,], start = c(2015, 05), frequency = 12) 

ts_1_stl <- stl(ts_1, s.window = "periodic") 

Aber ich habe den Fehler:

Error in stl(ts_1, s.window = "periodic") : only univariate series are allowed 
  • Was mache ich falsch, wie kann ich
+1

ich erste Aussage erraten würde 'ts (fehlende oder (df [-1]), = c beginnen (2015, 05), Frequenz = 12)' oder, wenn Sie es 'für jede Zeile wollen gelten (df [-1], 1, FUN = Funktion (x) ts (x, Start = c (2015, 05), Häufigkeit = 12)) ' – akrun

+0

Es hat so gut funktioniert !!! –

Antwort

1

auf jede Zeile anwenden Wenn wir auf jede Zeile anwenden (die Die erste Spalte ist "ID", eine Spalte der Zeichenklasse, die nicht benötigt wird. Wir können apply mit MARGIN = 1

apply(df[-1], 1, FUN = function(x) ts(x, start = c(2015, 05), frequency = 12)) 
0 verwenden

Für den gesamten Datensatz, müssen wir unlist

ts(unlist(df[-1]), start = c(2015, 05), frequency = 12) 

Wir würden die ‚df‘ übernehmen mehr Anzahl der Spalten haben, um genügend Beobachtungen, dh mindestens zwei Perioden für die „periodische“ müssen arbeiten

set.seed(24) 
df <- cbind(Col1 = LETTERS[1:4], as.data.frame(matrix(rnorm(31*4), ncol=31))) 
res <- apply(df[-1], 1, FUN = function(x) stl(ts(x, start = c(2015, 05), 
      frequency = 12), s.window = "periodic")) 
+1

Vielen Dank dafür! Ich habe für die res gewählt <- apply of stl. Danke, danke! –

Verwandte Themen