2012-08-15 22 views
7

का उपयोग कर आर में एक्सेल डेटा आयात करने के लिए कैसे करें मैं एक आर नौसिखिया हूं और सोच रहा था कि पंक्ति नामों और कॉलम नामों का उपयोग करके आर में एक्सेल डेटा कैसे आयात करें। विशेष रूप से मुझे एक एक्सेल फ़ाइल में कई वर्कशीट में डेटा का सबसेट चाहिए। क्या मैं पंक्ति के नाम और कॉलम नामों का उपयोग डेटा की कुछ कोशिकाओं को आर और पहचानने के लिए कर सकता हूं?कॉलम नाम और पंक्ति नाम

Worksheet 1 
---------- 
* X Y Z 
A 1 2 2 
B 1 1 1 
C 1 3 4 
D 4 2 2 
E 2 2 2 
---------- 
Worksheet 2 
---------- 
* X Y1 Z1 
A 1 2 2 
B 1 2 3 
C 1 3 4 
D 4 1 1 
E 2 1 1 

ऊपर स्प्रेडशीट में उदाहरण के लिए मैं डेटा कैसे निकाल सकते (2,2,2,2) पंक्ति और स्तंभ नाम (डी, वाई) (डी, जेड) (ई, वाई) का उपयोग (ई, जेड) वर्कशीट में 1

पंक्ति और कॉलम नाम (डी, वाई 1) (डी, जेड 1) (ई, वाई 1) (ई) का उपयोग करके मैं डेटा (1,1,1,1) कैसे निकाल सकता हूं , Z1) वर्कशीट 2 में?

किसी भी मदद के लिए धन्यवाद प्रदान की

बैरी

+0

क्या आपको आर में केवल एक सबसेट आयात करने की आवश्यकता है या क्या आर में पूरी चीज और सबसेट आयात करना ठीक है? – themel

उत्तर

2

कई संकुल जो आर के एक्सेल डेटा आयात करने के कार्यों प्रदान करते हैं; R data import/export दस्तावेज़ीकरण देखें।

मुझे उपयोगी होने के लिए xlsx पैकेज मिला है (यह दोनों .xls और .xlsx फ़ाइलों को पढ़ेगा)। मुझे विश्वास नहीं है कि यह इनपुट के रूप में पंक्ति/कॉलम नाम स्वीकार करेगा, लेकिन यह उनके संख्यात्मक मान (उदाहरण के लिए पंक्ति 1, कॉलम 4) स्वीकार करेगा। आपके मामले में, कुछ इस तरह काम करना चाहिए, यह सोचते हैं कि एक्स, वाई और जेड कॉलम 1-3 के अनुरूप:

library(xlsx) 
# first example subset; call it ss1 
# assume first row is not a header; otherwise requires header = T 
ss1 <- read.xlsx("myfile.xlsx", sheetIndex = 1, rowIndex = 4:5, colIndex = 2:3) 

# second example subset; call it ss2 
# just the same except worksheet index = 2 
ss2 <- read.xlsx("myfile.xlsx", sheetIndex = 2, rowIndex = 4:5, colIndex = 2:3) 

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

यह सब कहकर: मेरा पसंदीदा विकल्प चादर को एक पाठ प्रारूप जैसे सीएसवी, कट टूल्स (कट, हेड, पूंछ इत्यादि) का उपयोग करना होगा ताकि आवश्यक पंक्तियां/कॉलम प्राप्त हो जाएं और आयात करें आर

+1

मैं आपको 'xlsx' को मिटाने और इसके बजाय 'एक्सएलकनेक्ट' का उपयोग करने की सलाह देता हूं। यह एक्सेल में हेरफेर करने के लिए एक ही जावा पुस्तकालयों का उपयोग करता है, लेकिन 'इन्फ' अधिक उपयोगकर्ता के अनुकूल है। – Andrie

+0

आपकी सभी उपयोगी टिप्पणियों के लिए बहुत धन्यवाद – barryq

8

@ एंड्री ने एक्सएलकनेक्ट पैकेज का जिक्र किया, यह एक्सेल शीट में क्षेत्र का चयन करने की संभावना के साथ आर और एक्सेल के बीच I/O के लिए एक बहुत ही उपयोगी पैकेज है।

मैंने अपने ड्रॉपबॉक्स सार्वजनिक फ़ोल्डर में आपके जैसे एक्सेल फ़ाइल बनाई है, तो आप example.xls फ़ाइल here डाउनलोड कर सकते हैं।

require(XLConnect) 

## A5:C5 correspond to (D,Y) (D,Z) (E,Y) (E,Z) in your example 
selectworksheet1 <- readWorksheetFromFile("/home/ahmadou/Dropbox/Public/example.xls", 
           sheet = "Worksheet1", 
           region = "A5:C5", header = FALSE) 

selectworksheet1 
## Col0 Col1 Col2 
## 1 2 2 2 


## B4:C5 correspond to (D,Y1) (D,Z1) (E,Y1) (E,Z1) in the second example 
selectworksheet2 <- readWorksheetFromFile("/home/ahmadou/Dropbox/Public/example.xls", 
         sheet = "Worksheet2", 
         region = "B4:C5", header = FALSE) 

selectworksheet2 
## Col0 Col1 
## 1 1 1 
## 2 1 1 

unlist(selectworksheet2) 
## Col01 Col02 Col11 Col12 
## 1  1  1  1 
संबंधित मुद्दे