2016-07-10 19 views
0

Say I 30 Datenrahmen haben alle mit einem Datum 01/01/2000-30/01/2000 im Format ddmmyy (Code unten) genannt:kombinieren mehrere Datenrahmen basierend auf Sequenz von Namen

Season <- seq(as.Date("2000-01-01"),as.Date("2000-01-30"),1) 
Season <- format(Season,"%d%m%y") 

for (s in Season) { 

    df <- data.frame(X=1:10, Y=1:10) 

    aa <- paste(s,"tests",s ,sep = "_") 

    assign(aa,df) 

} 

jedem Namen finden Sie Dosen, hat das Wort tests hinzugefügt. Ich möchte (rbind?) die data.frame s basierend auf dem Datum kombinieren. Kombinieren Sie in diesem Fall data.frame s, die enthalten, die Daten von 01-01-00 bis 10-01-00.

Ich habe den folgenden Code, um alle Datenrahmen zu kombinieren, aber was ist, wenn ich nur die oben gezeigten auswählen möchte?

All_dfs <- do.call(rbind, eapply(.GlobalEnv,function(x) if(is.data.frame(x)) x)) 

Ist es besser, zuerst eine Liste zu erstellen?

Antwort

1

Wir können mget verwenden, um die Werte von ‚Season‘ in einem list und rbind die list von data.frame s dann zu erhalten. Da es ein Suffix "Tests" gefolgt von "Season" verkettet mit der "Season" gibt, können wir paste verwenden, um die Zeichenfolge zu erhalten, dann mget verwenden.

res <- do.call(rbind, mget(paste0(Season[1:10], "_tests_", Season[1:10]))) 
dim(res) 
#[1] 100 2 
+0

Vielen Dank! Ich habe mich in den Fuß geschossen, indem ich versucht habe, es zu einer einfacheren Frage zu machen, aber jetzt habe ich die Änderungen vorgenommen. Könnten Sie bitte einen Blick darauf werfen? Ich möchte die 'dat.frame's auswählen, die' Season [1:10] ' – Bonono

+1

@Bonono UPdated den Beitrag – akrun

+0

@ akrun, brilliantes Dankeschön. Nur um es weiter zu komplizieren, was wäre, wenn das Suffix für jeden Datenrahmen anders wäre - habe die Frage bearbeitet – Bonono