Dataframe in Vektoren splitten für Zeitreihenanalyse

Methoden der Zeitreihenanalyse

Moderator: schubbiaschwilli

Antworten
ruppy
Beiträge: 41
Registriert: Mo Nov 04, 2019 10:05 pm

Dataframe in Vektoren splitten für Zeitreihenanalyse

Beitrag 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
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Dataframe in Vektoren splitten für Zeitreihenanalyse

Beitrag 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
ruppy
Beiträge: 41
Registriert: Mo Nov 04, 2019 10:05 pm

Re: Dataframe in Vektoren splitten für Zeitreihenanalyse

Beitrag von ruppy »

Hi Jörg,

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

BG ruppy
Antworten