Ariel
Ariel

Reputation: 153

reading excel files into a single dataframe with readxl R

I have a bunch of excel files and I want to read them and merge them into a single data frame. I have the following code:

library(readxl)
files <- list.files()
f <- list()
data_names <- gsub("[.]xls", "", files)

to read each excel file into data frames

for (i in 1:length(files)){
 assign(data_names[i], read_excel(files[i], sheet = 1, skip = 6))
 }

but, if I try to save it in a variable, just saved the last file

for (i in 1:length(files)){
 temp <- read_excel(files[i], sheet = 1, skip = 6)
}

Upvotes: 0

Views: 2326

Answers (2)

Nick Kennedy
Nick Kennedy

Reputation: 12640

I would do this using plyr:

library(readxl)
library(plyr)
files <- list.files(".", "\\.xls")
data <- ldply(files, read_excel, sheet = 1, skip = 6)

If you wanted to add a column with the file name, you could instead do:

data <- ldply(files, function(fil) {
  data.frame(File = fil, read_excel(fil, sheet = 1, skip = 6))
}

Upvotes: 1

Sebastian
Sebastian

Reputation: 2570

I would recommend to use the list enviourment in R, assign can be quite confusing and you can't determain values with GET.

Should look like this:

l <- list()

for (i in 1:length(files)){
 l[[i]] <- read_excel(files[i], sheet = 1, skip = 6))
 }

ltogether <- do.call("rbind",l)

Upvotes: 0

Related Questions