Belirli bir klasördeki tüm dosyalar üzerinde, bir işleve yerleştirdiğim nispeten basit bir analiz parçası yapıyorum. İşlemi birkaç farklı klasörde otomatikleştirmeme yardımcı olacak herhangi bir ipucu olup olmadığını merak ediyordum.
- Öncelikle, belirli bir klasördeki tüm dosyaları doğrudan R'ye okumanın bir yolu olup olmadığını merak ediyordum. Aşağıdaki komutun tüm dosyaları listeleyeceğine inanıyorum:
files <- (Sys.glob("*.csv"))
... belirli bir uzantıya sahip tüm dosyaları listelemek için R Kullanarak bulduğum
Ve sonra aşağıdaki kod tüm bu dosyaları R'ye okur.
listOfFiles <- lapply(files, function(x) read.table(x, header = FALSE))
… R'de birden çok dosyayı manipüle etmekten
Ancak dosyalar tek tek dosyalar değil, sürekli bir liste olarak okunuyor gibi görünüyor… Belirli bir klasördeki tüm csv dosyalarını ayrı veri çerçeveleri olarak açmak için komut dosyasını nasıl değiştirebilirim?
İkinci olarak, tüm dosyaları ayrı ayrı okuyabileceğimi varsayarsak, tüm bu veri çerçeveleri üzerinde bir işlevi tek seferde nasıl tamamlarım. Örneğin, ne istediğimi gösterebilmek için dört küçük veri çerçevesi oluşturdum:
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)))
Ayrıca bir örnek işlev oluşturdum:
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)}
İşlevi her bir veri çerçevesine uygulamak için normalde aşağıdaki komutu kullanırdım.
Df1.summary <-Summary (dfile)
Fonksiyonu tüm veri çerçevelerine uygulamak ve veri çerçevelerinin başlıklarını özet tablolarda kullanmak yerine (örn. Df1.summary) bir yol var mı?
Çok teşekkürler,
Katie
plyr::llply
(veyaldply
bunun yerine)lapply
genelinde adları korumak ve örneğin kendi özet işlevini tanımlamakplyr::each(min, max, mean, sd, median)