R में डेटा आयात करें: CSV, Excel, SPSS, Stata, SAS फ़ाइलें पढ़ें

⚡ स्मार्ट सारांश

R में डेटा आयात करने के तरीके में read.csv() का उपयोग करके CSV फ़ाइलें, readxl का उपयोग करके Excel वर्कबुक और haven का उपयोग करके SAS, STATA या SPSS फ़ाइलें पढ़ना शामिल है। यह चरण-दर-चरण गाइड आयात के दौरान शीट, पंक्तियों और सेल श्रेणियों का सटीक चयन करना भी सिखाता है।

  • 📄 सीएसवी आयात: read.csv(file, header = TRUE, sep = “,”) स्थानीय पथ या किसी अन्य स्थान से अल्पविराम से पृथक की गई फ़ाइल को लोड करता है। URL.
  • ⚠️ संस्करण परिवर्तन: R 4.0.0 के बाद से, कैरेक्टर कॉलम कैरेक्टर ही रहते हैं, क्योंकि stringsAsFactors अब डिफ़ॉल्ट रूप से FALSE होता है।
  • 📗 एक्सेल आयात: readxl फ़ंक्शन का read_excel() फ़ंक्शन .xls और .xlsx दोनों फ़ाइलों को हैंडल करता है, और excel_sheets() फ़ंक्शन पहले प्रत्येक वर्कशीट को सूचीबद्ध करता है।
  • 🎯 सटीक चयन: n_max पंक्तियों को सीमित करता है, range एक्सेल नोटेशन लेता है, और cell_rows() या cell_cols() इंडेक्स और अक्षर लेते हैं।
  • 🔄 अन्य सॉफ्टवेयर: haven, read_sas(), read_dta(), और read_sav() फ़ंक्शन प्रदान करता है, जिनमें से प्रत्येक को केवल एक पथ की आवश्यकता होती है या URL.
  • 🧹 स्वच्छ इनपुट: आयात करने से पहले, गुमशुदा मानों को NA के रूप में एन्कोड करें और कॉलम नामों में रिक्त स्थान या प्रतीकों से बचें।

R में डेटा आयात करें

डेटा विभिन्न प्रारूपों में मौजूद हो सकता है। प्रत्येक प्रारूप के लिए R एक विशिष्ट फ़ंक्शन और तर्क है। यह ट्यूटोरियल बताता है कि डेटा को R में कैसे आयात किया जाए।

CSV फ़ाइलें पढ़ें

सबसे व्यापक रूप से उपयोग किया जाने वाला डेटा प्रारूप .csv है, जिसमें डेटा को अल्पविराम से अलग किया जाता है। R स्टार्टअप के दौरान कई लाइब्रेरी लोड करता है, जिनमें utils पैकेज भी शामिल है। यह पैकेज read.csv() फ़ंक्शन प्रदान करता है, जो CSV फ़ाइल खोलने का मानक तरीका है। इसका सिंटैक्स इस प्रकार है:

read.csv(file, header = TRUE, sep = ",")

तर्क:

  • पट्टिका: पथ जहाँ फ़ाइल संग्रहीत है
  • हैडर: पुष्टि करें कि फ़ाइल में हेडर है या नहीं, डिफ़ॉल्ट रूप से, हेडर TRUE पर सेट होता है
  • सितम्बर: चर को विभाजित करने के लिए उपयोग किया जाने वाला प्रतीक। डिफ़ॉल्ट रूप से, `,`.

हम डेटा फ़ाइल नाम mtcats पढ़ेंगे। csv फ़ाइल ऑनलाइन संग्रहीत है। यदि आपकी .csv फ़ाइल स्थानीय रूप से संग्रहीत है, तो आप कोड स्निपेट के अंदर PATH को बदल सकते हैं। इसे ' ' के अंदर लपेटना न भूलें। PATH को एक स्ट्रिंग मान होना चाहिए।

मैक उपयोगकर्ता के लिए, डाउनलोड फ़ोल्डर का पथ है:

 "/Users/USERNAME/Downloads/FILENAME.csv"

विंडोज़ उपयोगकर्ता के लिए:

"C:\Users\USERNAME\Downloads\FILENAME.csv"

ध्यान रखें कि, हमें हमेशा फ़ाइल नाम का एक्सटेंशन निर्दिष्ट करना चाहिए।

  • . सीएसवी
  • . Xlsx
  • .txt
  • ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'                
df <- read.csv(PATH, header =  TRUE, sep = ',')
length(df)

आउटपुट:

## [1] 12
class(df$X)

आउटपुट:

## [1] "factor"

R के 4.0.0 से पहले के संस्करणों में, read.csv() प्रत्येक कैरेक्टर कॉलम को एक फैक्टर में परिवर्तित कर देता था, यही कारण है कि ऊपर class(df$X) "factor" लौटाता है। आप stringsAsFactors = FALSE का उपयोग करके इसे बंद कर सकते हैं।

⚠️ संस्करण संबंधी टिप्पणी: के बाद से आर 4.0.0 डिफ़ॉल्ट रूप से stringsAsFactors = FALSE होता है, इसलिए कैरेक्टर कॉलम कैरेक्टर ही रहते हैं और पहला उदाहरण अब आधुनिक इंस्टॉलेशन पर "character" लौटाता है। नीचे दिए गए तरीके से आर्गुमेंट को स्पष्ट रूप से पास करने से हर वर्शन पर एक ही परिणाम मिलता है और यह सबसे सुरक्षित तरीका है।

PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE)
class(df$X)

आउटपुट:

## [1] "character"

चर X के लिए वर्ग अब एक वर्ण है।

read.csv() बनाम read_csv(): आपको किसका उपयोग करना चाहिए?

read.csv() फ़ंक्शन R के मूल में पहले से मौजूद होता है और इसके लिए किसी पैकेज की आवश्यकता नहीं होती है। readr पैकेज read_csv() फ़ंक्शन जोड़ता है, जो तेज़ है और आपके लिए कम निर्णय लेता है।

मापदंड read.csv() (यूटिलिटीज) read_csv() (readr)
पैकेज की आवश्यकता है कोई नहीं पाठक
बड़ी फ़ाइलों पर गति और धीमा कई गुना तेज़
रिटर्न डेटा ढांचा टिब्बल
कॉलम के नाम रिक्त स्थानों को बिंदुओं में परिवर्तित किया गया जैसा लिखा था, वैसा ही रखा गया।
प्रकार का पता लगाना मूक कॉलम विनिर्देश में रिपोर्ट किया गया
library(readr)
df <- read_csv(PATH)

# For very large files, data.table::fread() is faster still
library(data.table)
df <- fread(PATH)

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

एक्सेल फ़ाइलें पढ़ें

एक्सेल फ़ाइलें डेटा विश्लेषकों के बीच बहुत लोकप्रिय हैं। स्प्रेडशीट के साथ काम करना आसान है और लचीला है। R एक्सेल स्प्रेडशीट आयात करने के लिए एक लाइब्रेरी readxl से सुसज्जित है।

इस कोड का प्रयोग करें

require(readxl)

यह जाँचने के लिए कि क्या readxl आपकी मशीन में इंस्टॉल है। यदि आप r-conda-essential के साथ r इंस्टॉल करते हैं, तो लाइब्रेरी पहले से इंस्टॉल है। आपको कमांड विंडो में यह देखना चाहिए:

आउटपुट:

Loading required package: readxl.

यदि पैकेज इंस्टॉल नहीं है, तो आप इसे कोंडा कमांड से इंस्टॉल कर सकते हैं। पुस्तकालय या टर्मिनल में, conda install -c mittner r-readxl का उपयोग करें।

एक्सेल फ़ाइलों को आयात करने हेतु लाइब्रेरी लोड करने हेतु निम्नलिखित कमांड का उपयोग करें।

library(readxl)

readxl_उदाहरण()

हम इस ट्यूटोरियल के दौरान readxl पैकेज में शामिल उदाहरणों का उपयोग करते हैं।

कोड का प्रयोग करें

readxl_example()

लाइब्रेरी में उपलब्ध सभी स्प्रेडशीट देखने के लिए.

Readxl_उदाहरण

किसी विशेष स्प्रेडशीट का स्थान जांचने के लिए, उसका नाम दर्ज करें:

readxl_example("geometry.xls")

Readxl_उदाहरण

यदि आप R को conda के साथ स्थापित करते हैं, तो स्प्रेडशीट Anaconda3/lib/R/library/readxl/extdata/filename.xls में स्थित होती हैं

रीड_एक्सेल()

read_excel() फ़ंक्शन .xls और .xlsx दोनों एक्सटेंशन वाली फ़ाइलों को खोलता है और सही पार्सर को स्वचालित रूप से चुन लेता है।

सिंटैक्स है:

read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE)
arguments:
-PATH: Path where the excel is located
-sheet: Select the sheet to import. By default, all
-range: Select the range to import. By default, all non-null cells
-col_names: Select the columns to import. By default, all non-null columns

हम readxl लाइब्रेरी से स्प्रेडशीट आयात कर सकते हैं और पहली शीट में कॉलमों की संख्या गिन सकते हैं।

# Store the path of `datasets.xlsx`
example <- readxl_example("datasets.xlsx")
# Import the spreadsheet
df <- read_excel(example)
# Count the number of columns
length(df)

आउटपुट:

## [1] 5

एक्सेल_शीट्स()

फ़ाइल datasets.xlsx 4 शीट से बनी है। हम excel_sheets() फ़ंक्शन का उपयोग करके पता लगा सकते हैं कि वर्कबुक में कौन सी शीट उपलब्ध हैं

example <- readxl_example("datasets.xlsx")

excel_sheets(example)

आउटपुट:

[1] "iris"     "mtcars"   "chickwts" "quakes"

यदि किसी वर्कशीट में कई शीट शामिल हैं, तो शीट तर्कों का उपयोग करके किसी विशेष शीट का चयन करना आसान है। हम शीट का नाम या शीट इंडेक्स निर्दिष्ट कर सकते हैं। हम सत्यापित कर सकते हैं कि क्या दोनों फ़ंक्शन समान आउटपुट को समान() के साथ लौटाते हैं।

example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)

आउटपुट:

## [1] TRUE

हम दो तरीकों से नियंत्रित कर सकते हैं कि कौन सी कोशिकाओं को पढ़ना है

  1. n पंक्तियाँ वापस करने के लिए n_max तर्क का उपयोग करें
  2. cell_rows या cell_cols के साथ संयुक्त श्रेणी तर्क का उपयोग करें

उदाहरण के लिए, हम पहली पांच पंक्तियों को आयात करने के लिए n_max को 5 के बराबर सेट करते हैं।

# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)

एक्सेल_शीट्स

यदि हम col_names को FALSE में बदलते हैं, तो R स्वचालित रूप से हेडर बना देता है।

# Read the first five row: without header
iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)

आईरिस_नो_हेडर

डेटा फ्रेम iris_no_header में, readxl ने पाँच प्लेसहोल्डर नाम उत्पन्न किए। पुराने संस्करणों ने X__1 से X__5 तक उत्पन्न किए, जबकि वर्तमान संस्करणों ने …1 से …5 तक उत्पन्न किए।

एक्सेल_शीट्स

हम स्प्रेडशीट में पंक्तियों और स्तंभों का चयन करने के लिए तर्क श्रेणी का भी उपयोग कर सकते हैं। नीचे दिए गए कोड में, हम श्रेणी A1 से B5 का चयन करने के लिए एक्सेल शैली का उपयोग करते हैं।

# Read rows A1 to B5
example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE)
dim(example_1)

आउटपुट:

## [1] 4 2

example_1 4 पंक्तियाँ और 2 स्तंभ लौटाता है। श्रेणी A1:B5 पाँच स्प्रेडशीट पंक्तियों को कवर करती है, लेकिन पहली पंक्ति को हेडर के रूप में उपयोग किया जाता है, इसलिए आयाम 4 गुणा 2 है।

एक्सेल_शीट्स

दूसरे उदाहरण में, हम फ़ंक्शन cell_rows() का उपयोग करते हैं जो रिटर्न की जाने वाली पंक्तियों की श्रेणी को नियंत्रित करता है। यदि हम 1 से 5 पंक्तियों को आयात करना चाहते हैं, तो हम cell_rows(1:5) सेट कर सकते हैं। ध्यान दें कि, cell_rows(1:5) वही आउटपुट देता है जो cell_rows(5:1) देता है।

# Read rows 1 to 5
example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE)			
dim(example_2)

आउटपुट:

## [1] 4 5

इसके विपरीत, example_2 4 गुणा 5 का है। cell_rows(1:5) फिर से पहली पंक्ति को हेडर के रूप में मानता है, इसलिए सभी पांच कॉलम में चार डेटा पंक्तियाँ वापस की जाती हैं।

एक्सेल_शीट्स

यदि हम उन पंक्तियों को आयात करना चाहते हैं जो पहली पंक्ति से शुरू नहीं होती हैं, तो हमें col_names = FALSE शामिल करना होगा। यदि हम range = cell_rows(2:5) का उपयोग करते हैं, तो यह स्पष्ट हो जाता है कि हमारे डेटा फ़्रेम में अब हेडर नहीं है।

iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE)
iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)

एक्सेल_शीट्स

आप एक्सेल की तरह ही अक्षर के आधार पर कॉलम का चयन भी कर सकते हैं:

# Select columns A and B
col <- read_excel(example, range = cell_cols("A:B"))
dim(col)

आउटपुट:

## [1] 150   2

नोट: range = cell_cols(“A:B”), गैर-शून्य मान वाले सभी सेल का आउटपुट देता है। डेटासेट में 150 पंक्तियाँ हैं, इसलिए, read_excel() 150 तक की पंक्तियाँ देता है। इसे dim() फ़ंक्शन से सत्यापित किया जाता है।

na आर्गुमेंट read_excel() को बताता है कि किन मानों को अनुपलब्ध माना जाए। sum() और is.na() का उपयोग करके उनकी गणना करें:

  1. योग
  2. is.na

कोड यहाँ है

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

आउटपुट:

## [1] 50

हमारे पास 50 मान लुप्त हैं, जो सेटोसा प्रजाति से संबंधित पंक्तियाँ हैं।

अन्य सांख्यिकीय सॉफ़्टवेयर से डेटा आयात करें

अन्य सांख्यिकीय पैकेजों से फाइलें आयात की जाती हैं हेवन पैकेज, जो समर्थन करता है एसएएसSTATA और SPSS जैसे सॉफ्टवेयर का उपयोग करके, हम फ़ाइल एक्सटेंशन के अनुसार विभिन्न प्रकार के डेटासेट खोलने के लिए निम्नलिखित फ़ंक्शन का उपयोग कर सकते हैं:

  • एसएएस: read_sas()
  • STATA: read_dta() (या read_stata(), जो समान हैं)
  • SPSS: read_sav() या read_por(). हमें एक्सटेंशन की जांच करनी होगी

इनमें से प्रत्येक फ़ंक्शन को केवल एक तर्क की आवश्यकता होती है, वह PATH जहाँ फ़ाइल संग्रहीत है, और प्रत्येक एक इनपुट स्वीकार करता है। URL स्थानीय पथ की तरह ही आसानी से।

library(haven)

हेवन कोंडा आर-एसेंशियल के साथ आता है अन्यथा पर जाएं संपर्क या टर्मिनल में conda install -c conda-forge r-haven

एसएएस फ़ाइलें पढ़ें

हमारे उदाहरण के लिए, हम IDRE से प्रवेश डेटासेट का उपयोग करने जा रहे हैं।

PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true'
df <- read_sas(PATH_sas)
head(df)

आउटपुट:

## # A tibble: 6 x 4
##   ADMIT   GRE   GPA  RANK
##   <dbl> <dbl> <dbl> <dbl>
## 1     0   380  3.61     3
## 2     1   660  3.67     3
## 3     1   800  4.00     1
## 4     1   640  3.19     4
## 5     0   520  2.93     4
## 6     1   760  3.00     2

STATA फ़ाइलें पढ़ें

STATA डेटा फ़ाइलों के लिए आप read_dta() का उपयोग कर सकते हैं। हम बिल्कुल उसी डेटासेट का उपयोग करते हैं लेकिन .dta फ़ाइल में संग्रहीत करते हैं।

PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true'
df <- read_dta(PATH_stata)
head(df)

आउटपुट:

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3				
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

SPSS फ़ाइलें पढ़ें

read_sav() फ़ंक्शन एक SPSS फ़ाइल खोलता है, जिसका एक्सटेंशन .sav होता है।

PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true'
df <- read_sav(PATH_spss)
head(df)

आउटपुट:

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3			
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

डेटा आयात के लिए सर्वोत्तम अभ्यास

आयात करने से पहले नीचे दी गई चेकलिस्ट को पूरा करने से बाद में सफाई का अधिकांश काम बच जाता है:

  • स्प्रेडशीट के लिए सामान्य प्रारूप में प्रथम पंक्तियों को हेडर (आमतौर पर वेरिएबल्स का नाम) के रूप में उपयोग किया जाता है।
  • फ़ाइल या कॉलम के नाम में रिक्त स्थान से बचें, क्योंकि इन्हें कॉलम विभाजक के रूप में पढ़ा जा सकता है। इसके स्थान पर अंडरस्कोर का प्रयोग करें।
  • छोटे नाम पसंद किये जाते हैं
  • नाम में प्रतीकों का प्रयोग न करें। exchange_rate_$_€ लिखने के बजाय exchange_rate_dollar_euro लिखें।
  • लुप्त मानों को रिक्त स्थान, डैश या -99 जैसे प्रहरी संख्याओं के बजाय NA के रूप में एन्कोड करें, जिन्हें अन्यथा बाद में साफ़ करना पड़ता है।

R में डेटा आयात करना: फ़ंक्शन संदर्भ

नीचे दी गई तालिका में प्रत्येक फ़ाइल प्रकार के लिए आयात फ़ंक्शन, उसे प्रदान करने वाली लाइब्रेरी और उसके डिफ़ॉल्ट तर्क सूचीबद्ध हैं:

पुस्तकालय उद्देश्य समारोह डिफ़ॉल्ट तर्क
utils CSV फ़ाइल पढ़ें read.csv() फ़ाइल, हेडर = TRUE, सेप = “,”
readxl एक्सेल फ़ाइल पढ़ें रीड_एक्सेल() पथ, श्रेणी = शून्य, col_names = सत्य
हेवन SAS फ़ाइल पढ़ें read_sas() पथ
हेवन STATA फ़ाइल पढ़ें read_dta() / read_stata() पथ
हेवन SPSS फ़ाइल पढ़ें read_sav() पथ

दूसरी तालिका read_excel() का उपयोग करके चयन को आयात करने के तरीके दर्शाती है:

समारोह उद्देश्य तर्क
रीड_एक्सेल() n संख्या की पंक्तियाँ पढ़ें एन_मैक्स = 10
एक्सेल की तरह पंक्तियों और स्तंभों का चयन करें रेंज = “A1:D10”
अनुक्रमणिकाओं वाली पंक्तियाँ चुनें रेंज= सेल_पंक्तियाँ(1:3)
अक्षरों वाले कॉलम चुनें रेंज = सेल_कॉल्स(“A:C”)

अक्सर पूछे जाने वाले प्रश्न

R 4.0.0 ने stringsAsFactors के डिफ़ॉल्ट मान को TRUE से FALSE में बदल दिया है। वर्ण कॉलम अब वर्ण ही रहेंगे। यदि आपकी स्क्रिप्ट को पुराने R संस्करणों पर भी समान रूप से कार्य करना आवश्यक है, तो तर्क को स्पष्ट रूप से पास करें।

बदलें URL उद्धरण चिह्नों में पूरा स्थानीय पथ लिखें, जैसे “C:/Users/name/data.csv”। आगे की ओर स्लैश या दो बैकस्लैश का प्रयोग करें। Windowsऔर getwd() का उपयोग करके कार्यशील निर्देशिका की पुष्टि करें।

readxl बिना किसी अतिरिक्त मॉड्यूल के शुद्ध R भाषा में .xls और .xlsx फ़ाइलें पढ़ता है। Java निर्भरता। केवल पुराने xlsx पैकेज को इसकी आवश्यकता है। Java आर के माध्यम सेJavaइसीलिए रीडएक्सएल को ही बेहतर विकल्प माना जाता है।

आयात के समय चुपचाप होने वाले टाइप परिवर्तन, अप्रत्याशित एआई परिणामों का एक सामान्य कारण हैं। कॉलम प्रकारों को स्पष्ट रूप से घोषित करना, जैसा कि read_csv() फ़ंक्शन रिपोर्ट करता है, यह सुनिश्चित करता है कि प्रशिक्षण डेटासेट हर बार एक समान रूप से लोड हो।

जी हां। एआई सहायक त्रुटि संदेश से गलत विभाजकों, एन्कोडिंग समस्याओं और गलत तरीके से पढ़े गए हेडर का पता लगा सकते हैं। विश्लेषण जारी रखने से पहले हमेशा str() या glimpse() का उपयोग करके परिणाम की पुष्टि करें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: