r - Excel वर्कबुक में सभी वर्कशीट्स को डेटा.फ्रेम के साथ एक आर सूची में पढ़ें




xlconnect (6)

Readxl (22 जून 2015) का उपयोग कर अद्यतन जवाब

इस सवाल को पोस्ट करने के बाद से readxl पैकेज जारी किया गया है। यह xls और xlsx प्रारूप दोनों का समर्थन करता है। महत्वपूर्ण रूप से, अन्य एक्सेल आयात पैकेज के विपरीत, यह अतिरिक्त सॉफ़्टवेयर की स्थापना के बिना विंडोज, मैक और लिनक्स पर काम करता है।

तो Excel कार्यपुस्तिका में सभी चादरों को आयात करने के लिए एक कार्य होगा:

library(readxl)    
read_excel_allsheets <- function(filename, tibble = FALSE) {
    # I prefer straight data.frames
    # but if you like tidyverse tibbles (the default with read_excel)
    # then just pass tibble = TRUE
    sheets <- readxl::excel_sheets(filename)
    x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
    if(!tibble) x <- lapply(x, as.data.frame)
    names(x) <- sheets
    x
}

इसे इसके साथ बुलाया जा सकता है:

mysheets <- read_excel_allsheets("foo.xls")

पुराना उत्तर

@mnel द्वारा दिए गए उत्तर पर बिल्डिंग, यहां एक साधारण फ़ंक्शन है जो एक्सेल फ़ाइल को तर्क के रूप में लेता है और प्रत्येक शीट को नामांकित सूची में डेटा.फ्रेम के रूप में देता है।

library(XLConnect)

importWorksheets <- function(filename) {
    # filename: name of Excel file
    workbook <- loadWorkbook(filename)
    sheet_names <- getSheets(workbook)
    names(sheet_names) <- sheet_names
    sheet_list <- lapply(sheet_names, function(.sheet){
        readWorksheet(object=workbook, .sheet)})
}

इस प्रकार, इसे इसके साथ बुलाया जा सकता है:

importWorksheets('test.xls')

मैं समझता हूं कि एक्सेल वर्कशीट को आर में पढ़ने के लिए XLConnect का उपयोग किया जा सकता है। उदाहरण के लिए, यह test.xls नामक कार्यपुस्तिका में पहली वर्कशीट को आर में test.xls

library(XLConnect)
readWorksheetFromFile('test.xls', sheet = 1)

मेरे पास एकाधिक वर्कशीट्स के साथ एक एक्सेल वर्कबुक है।

कार्यपुस्तिका में सभी वर्कशीट्स को आर में एक सूची में कैसे आयात किया जा सकता है, जहां सूची का प्रत्येक तत्व किसी दिए गए शीट के लिए डेटा.फ्रेम है, और जहां प्रत्येक तत्व का नाम एक्सेल में वर्कशीट के नाम से मेल खाता है?



कार्यपुस्तिका से एकाधिक चादरें पढ़ने के लिए, निम्नानुसार readxl पैकेज का उपयोग करें:

library(readxl)
library(dplyr)

final_dataFrame <- bind_row(path_to_workbook %>%
                              excel_sheets() %>%
                              set_names() %>%
                              map(read_excel, path = path_to_workbook))

यहां, bind_row (dplyr) सभी डेटा पंक्तियों से सभी डेटा पंक्तियों को एक डेटा फ्रेम में रखेगा, और path_to_workbook "dir / of / the / data / workbook" है।


चूंकि इस नंबर पर नंबर एक हिट है: सूची में बहु शीट एक्सेल पढ़ें:

openxlsx समाधान यहां है:

filename <-"myFilePath"

sheets <- openxlsx::getSheetNames(filename)
SheetList <- lapply(sheets,openxlsx::read.xlsx,xlsxFile=filename)
names(SheetList) <- sheets

मैं इस पुराने प्रश्न में ठोकर खाई और मुझे लगता है कि सबसे आसान तरीका अभी भी गायब है।

आप कोड की केवल एक पंक्ति के साथ सभी एक्सेल शीट आयात करने के लिए rio का उपयोग कर सकते हैं।

library(rio)
data_list <- import_list("test.xls")

यदि आप tidyverse प्रशंसक हैं, तो आप फंक्शन कॉल में setclass तर्क जोड़कर उन्हें आसानी से टिब्बल के रूप में आयात कर सकते हैं।

data_list <- import_list("test.xls", setclass = "tbl")

मैंने उपर्युक्त कोशिश की और डेटा की मात्रा के साथ समस्याएं थीं जो मेरे 20 एमबी एक्सेल को बदलने के लिए आवश्यक थीं; इसलिए उपर्युक्त मेरे लिए काम नहीं करता था।

अधिक शोध के बाद मैं openxlsx पर ठोकर खाई और आखिर में यह चाल चल रही थी (और तेज़) आर में एक बड़ी xlsx फ़ाइल आयात करना?

https://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf





xlconnect