特定のフォルダー内のすべてのファイルに対して、関数に入れた比較的単純な分析を行っています。さまざまなフォルダでプロセスを自動化するのに役立つヒントが誰かあるかどうか疑問に思いました。
- まず、特定のフォルダー内のすべてのファイルをRに直接読み取る方法があるかどうか疑問に思いました。次のコマンドですべてのファイルが一覧表示されると思います。
files <- (Sys.glob("*.csv"))
... Rを使用して指定された拡張子を持つすべてのファイルを一覧表示することで見つけました
そして、次のコードはそれらすべてのファイルをRに読み込みます。
listOfFiles <- lapply(files, function(x) read.table(x, header = FALSE))
しかし、ファイルは個々のファイルではなく、1つの連続したリストとして読み込まれるようです。スクリプトを変更して、特定のフォルダー内のすべてのcsvファイルを個々のデータフレームとして開くにはどうすればよいですか。
次に、すべてのファイルを個別に読み取ることができると仮定して、これらすべてのデータフレームで関数を一度に完了するにはどうすればよいですか。たとえば、4つの小さなデータフレームを作成したので、必要なものを説明できます。
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)))
関数の例も作成しました。
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)}
通常、次のコマンドを使用して、個々のデータフレームに関数を適用します。
Df1.summary <-Summary(dfile)
関数をすべてのデータフレームに適用する代わりに、サマリーテーブル(つまりDf1.summary)でデータフレームのタイトルを使用する方法はありますか?
どうもありがとう、
ケイティ
plyr::llply
(またはldply
)の代わりに、lapply
全体の名を保存し、私自身の要約関数を定義するために、例えばplyr::each(min, max, mean, sd, median)