Seite 1 von 1

Dataframe in Vektoren splitten für Zeitreihenanalyse

Verfasst: Mo Nov 04, 2019 10:45 pm
von ruppy
Hallo zusammen,

nach einiger Zeit des stillen Mitlesens habe ich mich dazu entschieden mich hier mal anzumelden. Beschäftige mich im Studium und im Nebenjob mit R (Anfänger) und denke hier noch einiges Lernen zu können :o


Zu meiner eigentlichen Frage:

Ich möchte für die Absatzmengen versch. Produkte Zeitreihenanalysen durchführen, d.h. je Produkt eine Zeitreihe. Nach Import der Daten in RStudio sind die Daten im Wide-Format (kommen so aus Vorsystem), d.h. wenn ich die Datumspalte ausschließe verbleiben noch X Spalten für X Zeitreihen. Ich möchte nun erreichen, dass aus jeder Spalte X eine Zeitreihe erzeugt wird. Der Name der jeweiligen Zeitreihe besteht bestenfalls aus dem Präfix "ts" und dem ursprünglichen colname, wobei der colname an sich auch genügen würden (wenn auch nicht ganz optimal).

Nach diesen Ausschweifungen hier ein simples Beispiel:

Code: Alles auswählen

library(tidyverse)
### So ist mein Dataframe aufgebaut
set.seed(12345)
rawdata <- as_data_frame(
  list(
    year = 2001:2010,
    Produkt1 = rnorm(10,0,1),
    Produkt2 = rnorm(10,0,1),
    Produkt3 = rnorm(10,0,1)))
### So generiere ich Start und Endzeitpunkt der Zeitreihen
start_ts <- min(rawdata$year)
end_ts <- max(rawdata$year)
### So generiere ich eine der Zeitreihen
ts_Produkt1 <- ts(rawdata$Produkt1,start = start_ts,end = end_ts,frequency = 1)
Natürlich könnte man jede einzelne Zeitreihe so manuell erzeugen, aber das geht ja definitv effizienter und weniger fehleranfällig.

Freue mich auf eure Antworten und bedanke mich schon einmal ;)

PS: Hoffe der Code ist korrekt formatiert.

BG ruppy

Re: Dataframe in Vektoren splitten für Zeitreihenanalyse

Verfasst: Di Nov 05, 2019 8:34 am
von jogo
Hallo ruppy,

willkommen im Forum!
Packe die Zeitreihen in eine Liste:

Code: Alles auswählen

L <- lapply(rawdata[-1], function(x) ts(x, start = start_ts, end = end_ts, frequency = 1))
Probier auch mal

Code: Alles auswählen

L <- lapply(rawdata[-1], FUN=ts, start = start_ts, end = end_ts, frequency = 1)
ich vermute, auch dies könnte funktionieren.

Laut Dokumentation der Funktion ts() ist frequency = 1 der Standardwert. Du kannst den Parameter also auch weglassen in jeder der beiden Varianten.

Gruß, Jörg

Re: Dataframe in Vektoren splitten für Zeitreihenanalyse

Verfasst: Di Nov 05, 2019 9:00 am
von ruppy
Hi Jörg,

vielen Dank für deine Antwort ;)
Beide Varianten funktionieren einwandfrei.

BG ruppy