Excel फ़ाइलों को R, xlsx या xls में आयात करना


91

कृपया कोई मुझे एक्सेल 2007 (.xlsx) फ़ाइल को आर में आयात करने के सर्वोत्तम तरीके पर मदद कर सकता है। मैंने कई तरीकों की कोशिश की है और कोई भी काम नहीं करता है। मैंने 2.13.1, विंडोज़ XP, xlsx 0.3.0 में अपग्रेड किया है, मुझे नहीं पता कि त्रुटि क्यों आती रहती है। मैंने कोशिश की:

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx","DNA_Tag_Numbers")

या

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx",1)

लेकिन मुझे त्रुटि मिली:

 Error in .jnew("java/io/FileInputStream", file) : 
  java.io.FileNotFoundException: C:\AB_DNA_Tag_Numbers.xlsx (The system cannot find the file specified)

धन्यवाद।


4
आप ऐसा कितनी बार कर रहे हैं? यदि केवल एक बार, यह एक्सेल का उपयोग करने के लिए लगभग हमेशा सबसे अच्छा है, जैसे कि अधिक खुले प्रारूप में निर्यात करने के लिए .csv
अरी बी। फ्रीडमैन

gsk3: हाँ, या Google डॉक्स, जिनके पास '09 से एक्सेल 2007 आयात समर्थन है: google.com/support/forum/p/Google%20Docs/… (अब तक यह अच्छी तरह से काम करता है।)
बेंजामिन एटकिन

6
R का यह कौन सा संस्करण है? क्या ऑपरेटिंग सिस्टम? Read.xlsx का कौन सा संस्करण? क्या आपने पोस्टिंग गाइड पढ़ी है? </ ripleybot>
10

2
क्या आप बता सकते हैं कि यह प्रश्न stackoverflow.com/questions/6099243/…
चेस

9
आपने जाँच की है कि R वास्तव में फ़ाइल खोजने में सक्षम है, उदा file.exists("C:/AB_DNA_Tag_Numbers.xlsx")?
बेन बोल्कर

जवाबों:


104

एक समाधान के लिए, जो बाहरी रूप से निर्भरता से मुक्त है *, अब है readxl:

रीडएक्सएल पैकेज एक्सेल से और आर में डेटा प्राप्त करना आसान बनाता है। मौजूदा पैकेजों में से कई की तुलना में (जैसे gdata, xlsx, xlsReadWrite) रीडएक्सएल में कोई बाहरी निर्भरता नहीं है, इसलिए सभी ऑपरेटिंग सिस्टम को स्थापित करना और उपयोग करना आसान है। यह एक ही पत्रक में संग्रहीत सारणीबद्ध डेटा के साथ काम करने के लिए डिज़ाइन किया गया है।

Readxl दोनों विरासत .xls प्रारूप और आधुनिक xml- आधारित .xlsx प्रारूप का समर्थन करता है। .xls का समर्थन libxls C लाइब्रेरी के साथ संभव है, जो अंतर्निहित बाइनरी प्रारूप की कई जटिलताओं को दूर करता है। .Xlsx को पार्स करने के लिए, हम RapidXML C ++ लाइब्रेरी का उपयोग करते हैं।

इसे इस तरह स्थापित किया जा सकता है:

install.packages("readxl") # CRAN version

या

devtools::install_github("hadley/readxl") # development version

प्रयोग

library(readxl)

# read_excel reads both xls and xlsx files
read_excel("my-old-spreadsheet.xls")
read_excel("my-new-spreadsheet.xlsx")

# Specify sheet with a number or name
read_excel("my-spreadsheet.xls", sheet = "data")
read_excel("my-spreadsheet.xls", sheet = 2)

# If NAs are represented by something other than blank cells,
# set the na argument
read_excel("my-spreadsheet.xls", na = "NA")

* कड़ाई से सच नहीं है, इसके लिए Rcppपैकेज की आवश्यकता होती है , जिसके लिए Rtools (Windows के लिए) या Xcode (OSX के लिए) की आवश्यकता होती है, जो R के लिए बाहरी निर्भरताएँ होती हैं। लेकिन उन्हें रास्तों के साथ किसी भी प्रकार की फ़िडलिंग की आवश्यकता नहीं होती है, इसलिए यह एक है जावा और पर्ल निर्भरता पर लाभ।

अद्यतन अब rexcel पैकेज है। यह Excel फ़ाइल और R में Excel स्वरूपण, फ़ंक्शंस और कई अन्य प्रकार की जानकारी प्राप्त करने का वादा करता है।


35

आप XLConnect पैकेज को आज़माना भी चाह सकते हैं। मैं xlsx की तुलना में इसके साथ बेहतर भाग्य था (इसके अलावा यह .xls फ़ाइलें भी पढ़ सकता है)।

library(XLConnect)
theData <- readWorksheet(loadWorkbook("C:/AB_DNA_Tag_Numbers.xlsx"),sheet=1)

इसके अलावा, यदि आप अपनी फ़ाइल के नहीं मिलने से परेशान हैं, तो इसे file.choose () के साथ चुनने का प्रयास करें।


7
बल्कि readWorksheet(loadWorkbook(...))आप के साथ एक ही थोड़ा अधिक सफलतापूर्वक कर सकते हैं readWorksheetFromFile(...)
ह्यूग

यह मेरी एक परेशान करने वाली चादरों पर काम करता है जो read.xlsx "java.lang.IllegalArgumentException: सेल इंडेक्स>> 0"
स्की_squaw

23

मैं निश्चित रूप read.xlsसे gdataपैकेज में फ़ंक्शन की कोशिश करूंगा , जो xlsxपैकेज की तुलना में काफी अधिक परिपक्व है । यह पर्ल की आवश्यकता हो सकती है ...


21

अपडेट करें

जैसा कि नीचे दिया गया उत्तर अब कुछ पुराना हो गया है, मैं सिर्फ रीडक्सल पैकेज पर ध्यान आकर्षित करूंगा । यदि एक्सेल शीट अच्छी तरह से स्वरूपित / बाहर की ओर है तो मैं अब वर्कबुक से पढ़ने के लिए रीडक्सल का उपयोग करूंगा । यदि चादरें खराब स्वरूपित हैं / बाहर हैं तो मैं अभी भी सीएसवी को निर्यात करूंगा और फिर आर को समस्याओं को read.csv()या तो पुराने या सादे पुराने से संभालूंगाreadLines()

मूल

मेरा पसंदीदा तरीका कॉमा सेपरेटेड वैल्यू (CSV) फाइलों में अलग-अलग एक्सेल शीट को बचाना है। विंडोज पर, ये फाइलें एक्सेल से जुड़ी हैं इसलिए आप डबल-क्लिक-ओपन-इन-एक्सेल "फीचर" को ढीला नहीं करते हैं।

CSV फ़ाइलों को R का उपयोग करके पढ़ा जा सकता है read.csv(), या, यदि आप किसी स्थान पर हैं या कुछ यूरोपीय सेटिंग्स (जहां ,दशमलव स्थान के रूप में उपयोग किया जाता है) के साथ स्थापित कंप्यूटर का उपयोग करके read.csv2()

इन कार्यों में समझदार चूक हैं जो उचित रूप से प्रारूपित फ़ाइलों को पढ़ने को सरल बनाती हैं। बस पहली पंक्ति या स्तंभ में नमूने या चर के लिए कोई भी लेबल रखें।

CSV में फ़ाइलों को संग्रहीत करने के अतिरिक्त लाभ यह हैं कि जैसे ही फाइलें सादी होती हैं, उन्हें बहुत आसानी से पास किया जा सकता है और आप आश्वस्त हो सकते हैं कि वे कहीं भी खुलेंगे; किसी को डेटा को देखने या संपादित करने के लिए एक्सेल की आवश्यकता नहीं है।


6
Csv मदद नहीं करेगा क्योंकि कार्यपुस्तिका में कई कार्यपत्रक हैं और प्रत्येक में 100k पंक्तियाँ हैं। धन्यवाद
nolyugo

7
मैंने कहा कि व्यक्तिगत शीट को CSV फ़ाइलों के रूप में सहेजें - क्योंकि ये सादे पाठ हैं, कार्यपत्रकों का आकार अप्रासंगिक है। यदि आप एक्सेल वर्कबुक्स के साथ काम करने पर जोर देते हैं तो डेटा को आर में पढ़ने के लिए उपलब्ध विकल्प और अधिक जटिल हो जाते हैं - विकल्पों के लिए RODBC, RDCOM पैकेज देखें। अंत में, यदि आप निश्चित हैं कि आपने उपयोग करने के लिए निर्देशों का पालन किया है read.xlsx() और उस पैकेज और आर के नवीनतम संस्करण हैं, तो संभावित बग की रिपोर्ट करने के लिए पैकेज अनुरक्षक को ईमेल करें।
गेविन सिम्पसन

यह वास्तव में डेटा और अंतर के स्तर पर निर्भर करता है जो आपके ओएस के बीच की आवश्यकता है। जैसे ही आपके लेबल या कारकों में गैर-एससीआई होता है और आपको मैक / विन / लिन के साथ काम करने की आवश्यकता होती है, यदि आप निर्यात करते हैं और एक्सेल से आयात करते हैं तो मिश्रित अजीबता होने लगेगी। Excel utf-8 को इनायत (या उस मामले के लिए सीएसवी) को संभाल नहीं सकता है। तो उस स्थिति में या तो आप एक्सेल में रहते हैं, या एक अलग स्प्रेडशीट एप्लिकेशन में चले जाते हैं (बाद वाला हमेशा संभव नहीं होता है)।
FvD

18

उदाहरण 2012:

library("xlsx")
FirstTable <- read.xlsx("MyExcelFile.xlsx", 1 , stringsAsFactors=F)
SecondTable <- read.xlsx("MyExcelFile.xlsx", 2 , stringsAsFactors=F)
  • मैं 'xlsx' पैकेज की कोशिश करूंगा, क्योंकि इसे संभालना आसान है और काफी परिपक्व लगता है
  • मेरे लिए ठीक काम किया और पर्ल या जो भी हो, किसी भी अतिरिक्त की जरूरत नहीं थी

उदाहरण 2015:

library("readxl")
FirstTable  <- read_excel("MyExcelFile.xlsx", 1)
SecondTable <- read_excel("MyExcelFile.xlsx", 2)
  • आजकल मैं इसका उपयोग करता हूं readxlऔर इसके साथ अच्छा अनुभव किया है।
  • कोई अतिरिक्त सामान की जरूरत नहीं है
  • अच्छा प्रदर्शन

14

यह नया पैकेज अच्छा लग रहा है http://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf इसे rJava की आवश्यकता नहीं है और गति के लिए 'Rcpp' का उपयोग कर रहा है।


और यह सक्रिय विकास के अंतर्गत है
रॉकसाइंस

1
मैं कुछ बहुत बड़ी एक्सेल वर्कबुक्स के साथ काम कर रहा हूं, और ओपनएक्सक्लेक्स केवल उसी के बारे में है जो इतनी बड़ी फ़ाइलों को संभाल सकता है।
जोस आर

दुर्भाग्य से यह "rtools" की आवश्यकता है
Ferdi

@Ferdi। ऐसा मत सोचो! बस एक बार पैकेज बनाना है। आगे के उपयोग के लिए नहीं।
रॉकसाइंस

5

यदि आप एक ही समस्या में चल रहे हैं और R आपको एक त्रुटि दे रहा है - फ़ंक्शन नहीं मिल रहा है ".jnew" - बस लाइब्रेरी rJava स्थापित करें। या यदि आपके पास पहले से ही बस लाइब्रेरी (rJava) है। यही समस्या होनी चाहिए।

इसके अलावा, यह हर किसी के लिए स्पष्ट होना चाहिए कि सीएसवी और टीएक्सटी फाइलों के साथ काम करना आसान है, लेकिन जीवन आसान नहीं है और कभी-कभी आपको बस एक xlsx खोलना होगा।


1
जब मैं संस्करण gdatagdata: read.xls support for 'XLSX' (Excel 2007+) files ENABLED.
२. to.२ को

1
मैं पुष्टि कर सकता हूं कि gdataसंस्करण 2.8.2 फ़ंक्शन के xlsxसाथ फाइलें पढ़ता read.xlsहै।
बेन

4

मैंने हाल ही में Schaun Wheeler के लिए R में एक्सेल फाइल आयात करने के फंक्शन की खोज की है, यह महसूस करने के बाद कि xlxs पैकेज को R 3.1.0 के लिए अपडेट नहीं किया गया है।

https://gist.github.com/schaunwheeler/5825002

फ़ाइल नाम के लिए ".xlsx" एक्सटेंशन होना चाहिए और जब आप फ़ंक्शन चलाते हैं तो फ़ाइल को खोला नहीं जा सकता।

यह कार्य अन्य लोगों के काम तक पहुँचने के लिए वास्तव में उपयोगी है। जब read.csv फ़ंक्शन का उपयोग करने पर मुख्य लाभ तब होते हैं

  • कई एक्सेल फाइल आयात करना
  • बड़ी फाइल आयात करना
  • फाइलें जो नियमित रूप से अपडेट की जाती हैं

Read.csv फ़ंक्शन का उपयोग करने के लिए प्रत्येक एक्सेल दस्तावेज़ को मैन्युअल खोलने और सहेजने की आवश्यकता होती है जो समय लेने वाली और बहुत उबाऊ होती है। इसलिए वर्कफ़्लो को स्वचालित करने के लिए स्काउन के फ़ंक्शन का उपयोग करना एक बड़ी मदद है।

इस समाधान के लिए स्कैप को बड़ा सहारा।


4

मेरे लिए ओपनएक्सएक्सएक्स पैकेज ने सबसे आसान तरीके से काम किया।

install.packages("openxlsx")
library(openxlsx)
rawData<-read.xlsx("your.xlsx");

2

आपका ऑपरेटिंग सिस्टम क्या है? R का कौन सा संस्करण आप चला रहे हैं: 32-बिट या 64-बिट? आपने जावा का कौन सा संस्करण स्थापित किया है?

जब मैंने पहली बार read.xlsx()फ़ंक्शन का उपयोग करना शुरू किया था, तो मुझे एक समान त्रुटि मिली थी और पता चला था कि मेरा मुद्दा (जो आपके लिए संबंधित हो सकता है या नहीं हो सकता है), कम से कम, इस प्रतिक्रिया को "यह भी कोशिश करें" के रूप में देखा जाना चाहिए) असंगतता से संबंधित था .xlsx 64-बिट जावा के साथ pacakge मुझे पूरा यकीन है कि .xlsx पैकेज में 32-बिट जावा की आवश्यकता है।

32-बिट आर का उपयोग करें और सुनिश्चित करें कि 32-बिट जावा स्थापित है। इससे आपकी समस्या का समाधान हो सकता है।


2

आपने जाँच की है कि R वास्तव में फ़ाइल ढूंढने में सक्षम है, जैसे file.exists ("C: /AB_DNA_Tag_Numbers.xlsx")? - बेन बोल्कर 14 अगस्त को 23:05 बजे

उपरोक्त टिप्पणी से आपकी समस्या हल हो गई है:

require("xlsx")
read.xlsx("filepath/filename.xlsx",1) 

उसके बाद ठीक काम करना चाहिए।


1

यदि आप एक OpenDocument स्प्रैडशीट फ़ाइल ( ods ) या एक पुराने Excel प्रारूप में निर्यात करते हैं तो आप कई टैब और अधिक स्वरूपण जानकारी रखने में सक्षम हो सकते हैं और इसे ODS रीडर या आपके द्वारा ऊपर उल्लिखित एक्सेल रीडर के साथ आयात कर सकते हैं।


1

जैसा कि यहां कई लोगों ने कहा है, मैं एक ही बात लिख रहा हूं लेकिन एक अतिरिक्त बिंदु के साथ!

सबसे पहले हमें यह सुनिश्चित करने की आवश्यकता है कि हमारे आर स्टूडियो में ये दो पैकेज स्थापित हैं:

  1. "Readxl"
  2. "XLConnect"

आर में एक पैकेज लोड करने के लिए आप नीचे दिए गए फ़ंक्शन का उपयोग कर सकते हैं:

install.packages("readxl/XLConnect")
library(XLConnect)
search()

खोज आपके R Studio में उपलब्ध वर्तमान संकुल की सूची प्रदर्शित करेगी।

अब एक और पकड़, भले ही आपके पास ये दो पैकेज हों लेकिन फिर भी आपको "xlsx" फ़ाइल पढ़ते समय समस्या आ सकती है और त्रुटि "त्रुटि: स्तंभ नाम से अधिक कॉलम" जैसी हो सकती है

इस समस्या को हल करने के लिए आप बस अपनी एक्सेल शीट "xlsx" को फिर से सेव कर सकते हैं

"सीएसवी (कोमा सीमांकित)"

और आपका जीवन बेहद आसान हो जाएगा ...।

मज़े करो!!


1

मैंने उपरोक्त सभी उत्तरों पर बहुत कोशिश की है। हालांकि, उन्होंने वास्तव में मदद नहीं की क्योंकि मैंने एक मैक का उपयोग किया था। रियो पुस्तकालय इस आयात समारोह जो मूल रूप से Rstudio में डेटा फ़ाइल के किसी भी प्रकार के आयात कर सकते हैं यहां तक कि उन फ़ाइल, अंग्रेजी के अलावा अन्य भाषाओं का उपयोग!

नीचे दिए गए कोड आज़माएं:

    library(rio)
    AB <- import("C:/AB_DNA_Tag_Numbers.xlsx")
    AB <- AB[,1]

उममीद है कि इससे मदद मिलेगी। अधिक विस्तृत संदर्भ के लिए: https://cran.r-project.org/web/packages/rio/vignettes/rio.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.