2016-07-21 11 views
0

zu transformieren Ich habe 19 data.frame für 19 Zeitraum. Jede data.frame-Zeile enthält eine Beobachtung und jede Spalte enthält eine Variable. Ich möchte jeden der 19 data.frames nacheinander umwandeln, um eine Zeitreihe zu erhalten.Ist es möglich, ein data.frame in einem Vektor in R

obs <- LETTERS[1:3] 
Var1 <- (2:4) 
Var2 <- (9:7) 

April2014 <- data.frame(obs, Var1, Var2) 

TimeSerie.April2014 <- data.frame(OBS = "2014/04/01", 
            AVar1 = April2014[1,2], 
            AVar2 = April2014[1,3], 
            BVar1 = April2014[2,2], 
            BVar1 = April2014[2,3], 
            CVar1 = April2014[3,2], 
            CVar2 = April2014[3,3]) 

Dies ist ein einfacheres Beispiel, die ich von April2014 zu TimeSeries.April2014 gehen will, so kann ich jeden der 19 Periode zu verbinden, um eine Zeitreihe zu erhalten.

P.S. Entschuldigung für die grobe Form meiner Frage, es ist meine erste Stapelüberlauffrage. Wenn Sie irgendwelche Tipps zur Formulierung haben, zögern Sie nicht, sie zu teilen.

+1

können Sie eine Ausgangsprobe des wat zeigen Sie das wollen Daten? –

Antwort

1

Für jeden Datenrahmen dat können Sie

as.numeric(t(dat[,-1])) 

erhalten den Vektor Sie wollen. Wenn Sie 19 Datenrahmen haben, sollten Sie dies 19 mal wiederholen. Wenn alle Datenrahmen in einer großen Liste sind large_list, dann sapply verwendet, wird die ganze Arbeit für Sie:

t(sapply(large_list, function (dat) as.numeric(t(dat[,-1])))) 
+0

Vielen Dank es funktioniert erstaunlich –

1

Gibt es eine Notwendigkeit für die Buchstaben in obs? Wenn Sie nur die Zahlen in den Zeilen lesen möchten und setzen sie zusammen in einem langen Vektor, kann dies eine kurze Antwort sein, die gut auf größere Datensätze skaliert:

Var1 <- (2:4) 
Var2 <- (9:7) 
April2014 <- data.frame(Var1, Var2) 

result <- unlist(data.frame(t(April2014))) 
print(result)