Estoy haciendo un análisis relativamente simple que he puesto en una función, en todos los archivos de una carpeta en particular. Me preguntaba si alguien tenía algún consejo que me ayude a automatizar el proceso en varias carpetas diferentes.
- En primer lugar, me preguntaba si había alguna forma de leer todos los archivos de una carpeta en particular directamente en R. Creo que el siguiente comando enumerará todos los archivos:
files <- (Sys.glob("*.csv"))
... que encontré en Usando R para enumerar todos los archivos con una extensión específica
Y luego el siguiente código lee todos esos archivos en R.
listOfFiles <- lapply(files, function(x) read.table(x, header = FALSE))
... de Manipular varios archivos en R
Pero los archivos parecen leerse como una lista continua y no como archivos individuales ... ¿cómo puedo cambiar el script para abrir todos los archivos csv en una carpeta en particular como marcos de datos individuales?
En segundo lugar, suponiendo que pueda leer todos los archivos por separado, ¿cómo puedo completar una función en todos estos marcos de datos de una sola vez? Por ejemplo, he creado cuatro pequeños marcos de datos para poder ilustrar lo que quiero:
Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1))) Df.2 <- data.frame(A = c(1:6),B = (c(2,3,4,5,1,1))) Df.3 <- data.frame(A = c(4,6,8,0,1,11),B = (c(7,6,5,9,1,15))) Df.4 <- data.frame(A = c(4,2,6,8,1,0),B = (c(3,1,9,11,2,16)))
También he creado una función de ejemplo:
Summary<-function(dfile){
SumA<-sum(dfile$A)
MinA<-min(dfile$A)
MeanA<-mean(dfile$A)
MedianA<-median(dfile$A)
MaxA<-max(dfile$A)
sumB<-sum(dfile$B)
MinB<-min(dfile$B)
MeanB<-mean(dfile$B)
MedianB<-median(dfile$B)
MaxB<-max(dfile$B)
Sum<-c(sumA,sumB)
Min<-c(MinA,MinB)
Mean<-c(MeanA,MeanB)
Median<-c(MedianA,MedianB)
Max<-c(MaxA,MaxB)
rm(sumA,sumB,MinA,MinB,MeanA,MeanB,MedianA,MedianB,MaxA,MaxB)
Label<-c("A","B")
dfile_summary<-data.frame(Label,Sum,Min,Mean,Median,Max)
return(dfile_summary)}
Normalmente, usaría el siguiente comando para aplicar la función a cada marco de datos individual.
Df1.summary <-Summary (archivo df)
¿Hay alguna manera en lugar de aplicar la función a todos los marcos de datos y usar los títulos de los marcos de datos en las tablas de resumen (es decir, Df1.summary)?
Muchas gracias,
Katie
plyr::llply
(oldply
) en lugar delapply
conservar los nombres en todo momento, y definir mi propia función de resumen, por ejemploplyr::each(min, max, mean, sd, median)