问题
I am aware this question has been asked multiple times, but despite of trying to apply the aforementioned solutions i was not able to solve my little problem:
I have saved all my .csv that i am aiming to merge into one folder:
> 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"
the I use a do.call
tio merge them all. Note that all the files have the same format.
sr.master <- do.call("rbind", lapply(file_list, read.csv, sep = ";", header = TRUE))
names(sr.master)
str(sr.master)
however after inspecting my resulting file I have realized that only the first file has been imported. What causes this problem?
> 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 ...
回答1:
Here is a simple way (and probably the fastest one) to read andbind multiple .csv
files into one single data frame using fread{data.table}
# Load library
library(data.table)
# Get a List of all files in directory named with a key word, say all `.csv` files
filenames <- list.files("C:/your/folder", pattern="*.csv", full.names=TRUE)
# read and row bind all data sets
data <- rbindlist(lapply(filenames,fread))
And in case you want to bind all data files into a list of data frames, it's as simple as
# Load data sets
list.DFs <- lapply(filenames,fread)
回答2:
# 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)
来源:https://stackoverflow.com/questions/44329362/merge-multiple-csv-files-into-one