2017-11-13 2 views
-1

各ファイルがテーブルを作成する複数のファイルをループしています。私はすべてのテーブルを一緒に持つように、各テーブルをファイルに保存したいと思います。考え方は、各ファイルが実行された後、最終出力がテーブル内の前回の最終出力に追加されることです。現在のコードは各ファイルをループしますが、フォルダ内の最後のファイルからデータを取り出し、同じ出力に繰り返し追加します。私は、コードを実行すると、ファイル名がこの形式で26回印刷されているfor-Loop複数の.xlsxファイルを1つのファイルに読み込んで保存する

filenames <- Sys.glob("*.xlsx") 
print(filenames) 

final.df<-data.table() 
for(i in 1:length(filenames)) { 
    #... final table named "Stats" 

    Stats$file <- i #To view which file is listed 
    df <- data.table(Stats) 
    final.df <- rbind(final.df, df) 
    drop(df) 
} 

:この形式で

[1] "file1.xlsx"   "file2.xlsx" 
[1] "file1.xlsx"   "file2.xlsx" 
[1] "file1.xlsx"   "file2.xlsx" 
... 

私の現在の出力プリント:

X  Y  Z  File 
1  10  2  file2 
2  6  2  file2 
1  9  2  file2 
1  10  2  file2 
2  6  2  file2 
1  9  2  file2 
ここに私のコードです

希望の出力は次のようになります:

X  Y  Z  File 
0  4  1  file1 
1  7  1  file1 
0  1  1  file1 
1  10  2  file2 
2  6  2  file2 
1  9  2  file2 

あなたのデータを含まない溶液

files <- list.files(pattern = "\\.xlsx$") 
print(files) 

final.df<-list() 

for(title in c(paste(files, sep="."))) { 
    #... (Some data named Stats) 
    Stats<-data.table(Stats) 
    final.df[[title]] <- Stats 
    print(final.df) 
} 
Final <- rbindlist(final.df) 
+0

これはおそらく回答されており、複製されています。これを確認してくださいhttps://stackoverflow.com/questions/24819433/reading-multiple-csv-files-from-a-folder-into-a-single-dataframe-in-r – user5249203

+0

もう少しインスピレーション:https:// stackoverflow .com/q/32888757/2204410 – Jaap

+0

私は個々のファイルを読む方法を知っています。私はファイルを読み込んだ後に出力を追加するつもりです。私は、これらのソリューションが元のファイルを一緒に追加すると信じていますが、これは私が探しているものではありません。 – SoccerAnalytics26

答えて

0

、私はこれは動作するはずだと思う:

listOut <- list() 
for(i in 1:length(filenames)) { 
    df <- data.table(filenames[i]) 
    listOut[[i]] <- df 
} 

dfFinal <- rbindlist(listOut) 

アイデアは、データフレームを作成し、あなたのファイルごとにリストに追加することです。次に、すべてのリスト要素を結合することができます。これは、既存のデータフレームに追加しようとするよりもはるかに効率的です。

+0

この回答は理にかなっていますが、私の出力はまだフォルダ内の最後のファイルを取得しており、重複した結果を追加しています。 – SoccerAnalytics26

+0

ええ、私はデータを見ることなくこれを想像するのが大変です。私は上記の編集をしました。それでも問題が解決しない場合は、ファイルをどこかで共有できますか? – IanK

+0

私はループラインで少し違うことをしなければなりませんでしたが、そうでなければこれは素晴らしい解決策でした。 – SoccerAnalytics26

関連する問題