にデータフレームにマージ:複数のxlsxファイルを読み込むと、私は、コードを書いているR
は、フォルダ
ソートのリストを読み込み、リストから特定のテキスト要素を持つフォルダを抽出
各ファイル内のタブ/シートを見つける各フォルダから
を完全なファイル名を取得
ループ/ lapply read.xlsx()に列を作成中のファイル
の私のネストされたリスト上究極の目標は、それぞれのフォルダから、それぞれのファイルからすべてのタブ/シートを読むことですどのタブ/シートであるかを識別し、どのフォルダから取得したかを識別し、それらをすべて1つにまとめます。
私の推奨するExcelファイルのパッケージは、「openxlsx」です。
はここでフォルダやファイルを取得するための私のコードです:私がループすることができませんでした
path<- "/Users/jackserna/Google Drive/Folder"
dataFolders<- list.files(path)
dataFolders<- sort(dataFolders[starts_with(match = "FY", vars = dataFolders)])
files<- lapply(lapply(dataFolders, FUN = function(x){
paste(path,x,sep = "/")
}), FUN = function(x){
list.files(x, pattern = "*.xlsx", full.names = TRUE)
})
/私のすべてのファイルとすべての私のシートの読み取り機能を適用します。私は1つ以上のフォルダを読んだり、それを繰り返さなければならなかった。私はしかし、このアプローチは私が私が読ん各シートのための余分な列としてシート名を追加することはできません... this postから
data.to.merge <- lapply(lapply(files[[1]], FUN = function(x){
read.xlsx(x, sheet = 3, cols = 1:5)
}), na.omit)
merged.daata <- Reduce(function(...) merge(..., all = T), data.to.merge)
をいくつかのコードを使用していました。このアプローチは、シート#3にデータがあることを前提としていしかし、これらのファイルではそうではありません。データはシート全体に分散され、一部のシートはマージするために無視する必要があります。
すべてのシートをつかむと、私はしたくないシートを解析する試みでは、ここで行われたものです。
allsheets<- list()
for(i in files){
for(j in i){
sheets<- getSheetNames(j)
allsheets<- cbind(allsheets,sheets)
}
}
しかし、これは読書のために使用できるように悪夢になっており、合併。
私は達成しようとしていることをRに理解させるにはどうすればよいですか?
私はこのループを試しています: 'data < - setNames(data.frame(matrix ncol = 207、nrow = 0))、column_names) wksheets < - list.files(recursive = T、pattern = ' における(jについて:loadWorkbook(wksheets [I]) sheetnames < - - - getSheets(NEW_FILE) sheetnames
この解決方法を試してください:http://stackoverflow.com/questions/15825004/xlconnect-loadworkbook-error-poixmlexception-java – sconfluentus