2017-06-02 7 views
0

に複数の.csvファイルをマージし、この質問は複数回頼まれましたが、私は私の小さな問題を解決することができませんでした上記のソリューションに適用しようとしているのにもかかわらず:私は承知しています1

を私はすべての私を救ってきました。

> file_list <- list.files() 
> file_list[] 
[1] "SR-einfam.csv"   "SR-garage.csv"   "SR-hotel.csv"   
[4] "SR-IndustrieGewerbe.csv" "SR-mehrfam.csv"   "SR-OffG.csv" 

私はそれらすべてをマージTIO do.callを使用します。私は1つのフォルダに統合することを目指していますcsvファイル。すべてのファイルの形式が同じであることに注意してください。

sr.master <- do.call("rbind", lapply(file_list, read.csv, sep = ";", header = TRUE)) 
names(sr.master) 
str(sr.master) 

しかし、作成したファイルを調べた結果、最初のファイルのみがインポートされていることに気付きました。 この問題の原因は何ですか?ここで

> str(sr.master) 
'data.frame': 1941 obs. of 8 variables: 
$ Berechnung: Factor w/ 51 levels "Berechnung 1",..: 51 1 12 23 34 45 47 48 49 50 ... 
$ Situation : Factor w/ 13 levels "Nach Massnahme 0",..: 6 6 6 6 6 6 6 6 6 6 ... 
$ Sachrisiko: num 1857 1857 1857 1337 1342 ... 
$ PID  : int 2844 2844 2844 2844 2844 2844 2844 2844 2844 2844 ... 
$ Case  : int 1 1 1 1 1 1 1 1 1 1 ... 
$ Differenz : num 0 0 0 -28 -27.7 ... 
$ Prozess : Factor w/ 1 level "Murgang": 1 1 1 1 1 1 1 1 1 1 ... 
$ Objektart : Factor w/ 1 level "Einfamilienhaus": 1 1 1 1 1 1 1 1 1 1 ... 
+0

実際の例がなければ、診断するのはかなり難しいです。最初に 'do.call(.. lapply ...) 'を2つの別々のステップに分割することをお勧めします。まず、 'myData < - lapply(...)'のようなものです。今度は結果リストを見てください。データセットの名前を確認します。それがあなたが考えるべきものが含まれていることを確認し、リストの各要素で 'str'を実行してください。 – lmo

+0

' lapply(file_list、read.csv、sep = ";"、header = TRUE) ? – Jimbou

+0

@Jimbou、 'sep ="、 "' csvファイルではない ';' – parth

答えて

0
# Get file list 
    file_list <- list.files() 

# Read all csv files in the folder and create a list of dataframes 
    ldf <- lapply(file_list , read.csv) 

# Combine each dataframe in the list into a single dataframe 
    df.final <- do.call("rbind", ldf) 
1

簡単な方法(とprobbly最速1)であるfread{data.table}

# Load library 
    library(data.table) 

# Get a List of all files named with a key word, say all `.csv` files 
    filenames <- list.files("C:/your/folder", pattern="*.csv", full.names=TRUE) 

# Load and bind all data sets 
    data <- rbindlist(lapply(filenames,fread)) 

そして、あなたがしたい場合は、を使用して1つのデータフレームに複数の.csvファイルのフレームを結合させますすべてのデータファイルをデータフレームのリストにバインドするには、次のように簡単です

# Load data sets 
    list.DFs <- lapply(filenames,fread) 
関連する問題