2017-10-11 30 views
0

Ich habe eine Excel-Datei mit vielen Blättern und ich brauche einen Code, um jedes Blatt in einem separaten Datenrahmen zu importieren, die in der gleichen Konvention wie der Blattname in Excel benannt werden .Importieren mehrerer Blätter in mehrere Datenrahmen in R

Beispiel, die Registerkarten A, B, C werden als Datenrahmen A, B bzw. C importiert.

Von anderen Threads, sah ich Codes wie: length(excel_sheets(filename)) die Anzahl der Blätter in der Datei erhalten

dann eine Liste erstellen, die die einzelnen Registerkarten enthalten würde:

read_excel_allsheets <- function(filename) { 
    sheets <- readxl::excel_sheets(filename) 
    x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X)) 
    names(x) <- sheets 
    x 
} 

Aber ich weiß nicht, wie die Tabs von dort in R importiert werden.

Würde die Hilfe sehr schätzen. Vielen Dank im Voraus!

Antwort

2

Hier ist eine Möglichkeit, es zu tun:

# write test data 
tf <- writexl::write_xlsx(
    list("the mtcars" = mtcars, "iris data" = iris), 
    tempfile(fileext = ".xlsx") 
) 

# read excel sheets 
sheets <- readxl::excel_sheets(tf) 
lst <- lapply(sheets, function(sheet) 
    readxl::read_excel(tf, sheet = sheet) 
) 
names(lst) <- sheets 

# shove them into global environment 
list2env(lst, envir = .GlobalEnv) 
0

Ihre Funktion liest in allen Tabs und speichert sie als Elemente einer einzigen Liste (wegen lapply()). Sie können mit list2env die Elemente aus der Liste nehmen:

your_excel_list <- read_excel_allsheets("test.xlsx") 
list2env(your_excel_list, .GlobalEnv) 

Sie werden sehen, dass die genannten Elemente der Liste sind nun Datenrahmen (oder tatsächlich tbl_df) im globalen Umfeld

Verwandte Themen