Fusionar muchos marcos de datos de archivos csv, cuando la columna de ID está implícita?

Me gustaría combinar un conjunto de marcos de datos (porque parece que muchas operaciones son más fáciles si solo se trata de w / one, pero corrígeme si estoy equivocado).

Actualmente tengo un dataframe como este:

ID, var1, var2 A, 2, 2 B, 4, 5 . . Z, 3, 2 

Cada ID está en una sola fila con varias medidas individuales

También tengo un archivo csv con medición repetida para cada ID, como:

filename = ID_B.csv

 time, var4, var5 0, 1, 2 1, 4, 5 2, 1, 6 ... 

Lo que me gustaría es:

 ID, time, va1, var2, var4, var5 ... B, 0, 4, 5, 1, 2, B, 1, 4, 5, 4, 5, B, 2, 4, 5, 1, 6, ... 

Realmente no me importa el orden de las columnas. La única solución en la que puedo pensar es agregar la columna ID a cada archivo csv y luego recorrerlos llamando a merge() varias veces. ¿Hay un enfoque más elegante?

Tengo entendido que necesita extraer el ID del nombre del archivo y luego combinar el csv importado con el dataframe existente.

 df1 <- read.csv(textConnection("ID, var1, var2 A, 2, 2 B, 4, 5")) # assuming the imported csv-files are in working directory filenames <- list.files(getwd(), pattern = "ID_[AZ].csv") # extract ID from filename ids <- gsub("ID_([AZ]).csv", "\\1", filenames) # import csv-files and append ID library(plyr) import <- mdply(filenames, read.csv) import$ID <- ids[import$Var1] import$Var1 <- NULL # merge imported csv-files and the existing dataframe merge(df1, import) 

Resultado:

 ID var1 var2 time var4 var5 1 B 4 5 0 1 2 2 B 4 5 1 4 5 3 B 4 5 2 1 6