subir - importar datos en r studio
¿Combinar muchos marcos de datos de archivos csv, cuando la columna ID está implícita? (1)
Me gustaría unir un montón de marcos de datos juntos (porque parece que muchas operaciones son más fáciles si solo estás tratando con w / one, pero corrígeme si me equivoco).
Actualmente tengo un marco de datos como este:
ID, var1, var2
A, 2, 2
B, 4, 5
.
.
Z, 3, 2
Cada ID está en una sola fila con varias mediciones individuales
También tengo un archivo csv con mediciones repetidas para cada ID, como:
nombre_archivo = 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 la columna. La única solución que se me ocurre es agregar la columna de ID a cada archivo csv y luego hacer un ciclo a través de ellos llamando a merge()
varias veces. ¿Hay un enfoque más elegante?
Según tengo entendido, debe extraer el ID del nombre de archivo y luego combinar el csv importado con el marco de datos 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_[A-Z].csv")
# extract ID from filename
ids <- gsub("ID_([A-Z]).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