R Language
सादा-पाठ फ़ाइलों (CSV, TSV, आदि) में सारणीबद्ध डेटा पढ़ना और लिखना
खोज…
वाक्य - विन्यास
read.csv (फ़ाइल, हेडर = TRUE, sep = ",", quot = "" ", dec ="। ", fill = TRUE, comment.char =" ", ...)
read.csv2 (फ़ाइल, हेडर = TRUE, sep = ";", quot = "" ", dec =", ", भरें = TRUE, comment.char =" ", ...)
readr :: read_csv (फ़ाइल, col_names = TRUE, col_types = NULL, locale = default_locale (), na = c ("", "NA"), टिप्पणी = "", trim_ws = TRUE, छोड़ = 0, n_max = -1 , प्रगति = इंटरैक्टिव ()
data.table :: fread (इनपुट, sep = "auto", sep2 = "auto", nrows = -1L, शीर्ष लेख = "auto", na.strings = "NA", stringsAsFactors = FALSE, क्रिया = getOption ("datatable") .verbose "), ऑटोस्टार्ट = 1 एल, स्किप = 0 एल, सेलेक्ट करें = NULL, drop = NULL, colClasses = NULL, integer64 = getOption (" datatable.integer64 "), # डिफ़ॉल्ट:" integer64 "dec = if (sep! =" " । "" ""। "और", ", col.names, check.names = FALSE, एन्कोडिंग =" अज्ञात ", स्ट्रिप.व्हाइट = TRUE, showProgress = getOption (" datatable.showProgress "), # डिफ़ॉल्ट: TRUE डेटा। तालिका = getOption ("datatable.fread.datatable") # डिफ़ॉल्ट: TRUE)
पैरामीटर
पैरामीटर | विवरण |
---|---|
फ़ाइल | पढ़ने के लिए CSV फ़ाइल का नाम |
हैडर | तार्किक: .csv फ़ाइल में कॉलम नामों के साथ हेडर पंक्ति है? |
सितम्बर | चरित्र: प्रतीक जो प्रत्येक पंक्ति पर कोशिकाओं को अलग करता है |
उद्धरण | चरित्र: प्रतीक चरित्र तार उद्धृत करने के लिए इस्तेमाल किया |
दिसम्बर | चरित्र: प्रतीक का प्रयोग दशमलव विभाजक के रूप में किया जाता है |
भरण | तार्किक: जब TRUE, असमान लंबाई वाली पंक्तियों को रिक्त फ़ील्ड से भरा जाता है। |
comment.char | चरित्र: चरित्र सीएसवी फ़ाइल में टिप्पणी के रूप में इस्तेमाल किया। इस चरित्र की पूर्ववर्ती रेखाओं को अनदेखा किया जाता है। |
... | अतिरिक्त तर्क read.table लिए पारित किया जा सकता है |
टिप्पणियों
ध्यान दें कि एक सादे पाठ प्रारूप में निर्यात करने से व्यापक पोर्टेबिलिटी के लिए चर कक्षाओं की तरह डेटा में एन्कोड की गई जानकारी का अधिकांश भाग बलिदान होता है। ऐसे मामलों के लिए जिन्हें इस तरह की पोर्टेबिलिटी की आवश्यकता नहीं है, एक प्रारूप जैसे .Rata या पंख अधिक उपयोगी हो सकते हैं।
अन्य प्रकार की फ़ाइलों के लिए इनपुट / आउटपुट कई अन्य विषयों में शामिल है, जो सभी इनपुट और आउटपुट से जुड़े हुए हैं।
आयात .csv फ़ाइलें
बेस आर का उपयोग करके आयात करना
अल्पविराम से अलग मूल्य फ़ाइलें (CSV में) का उपयोग कर आयात किया जा सकता read.csv
, जो लपेटता read.table
, लेकिन उपयोग करता sep = ","
एक अल्पविराम के परिसीमक सेट करने के लिए।
# get the file path of a CSV included in R's utils package
csv_path <- system.file("misc", "exDIF.csv", package = "utils")
# path will vary based on installation location
csv_path
## [1] "/Library/Frameworks/R.framework/Resources/library/utils/misc/exDIF.csv"
df <- read.csv(csv_path)
df
## Var1 Var2
## 1 2.70 A
## 2 3.14 B
## 3 10.00 A
## 4 -7.00 A
एक उपयोगकर्ता के अनुकूल विकल्प, file.choose
, निर्देशिकाओं के माध्यम से ब्राउज़ करने की अनुमति देता है:
df <- read.csv(file.choose())
टिप्पणियाँ
- विपरीत
read.table
,read.csv
डिफ़ॉल्टheader = TRUE
, और स्तंभ नाम के रूप में पहली पंक्ति का उपयोग करता है। - इन सभी कार्यों के लिए तार में परिवर्तित कर देंगे
factor
डिफ़ॉल्ट जब तक या तो द्वारा वर्गas.is = TRUE
याstringsAsFactors = FALSE
। -
read.csv2
वेरिएंटread.csv2
sep = ";"
औरdec = ","
उन देशों के डेटा पर उपयोग के लिए जहां अल्पविराम का उपयोग दशमलव बिंदु के रूप में और अर्धविराम को क्षेत्र विभाजक के रूप में किया जाता है।
पैकेज का उपयोग करके आयात करना
readr
पैकेज का read_csv
फ़ंक्शन बहुत तेज़ प्रदर्शन, बड़ी फ़ाइलों के लिए प्रगति बार और मानक read.csv
तुलना में अधिक लोकप्रिय डिफ़ॉल्ट विकल्प read.csv
, जिसमें stringsAsFactors = FALSE
।
library(readr)
df <- read_csv(csv_path)
df
## # A tibble: 4 x 2
## Var1 Var2
## <dbl> <chr>
## 1 2.70 A
## 2 3.14 B
## 3 10.00 A
## 4 -7.00 A
Data.table के साथ आयात करना
data.table
पैकेज का परिचय समारोह fread
। हालांकि यह read.table
समान है, फ़ाइल के सीमांकक स्वचालित रूप से अनुमान लगाते हुए, fread
आमतौर पर तेज़ और अधिक लचीला होता है।
# get the file path of a CSV included in R's utils package
csv_path <- system.file("misc", "exDIF.csv", package = "utils")
# path will vary based on R installation location
csv_path
## [1] "/Library/Frameworks/R.framework/Resources/library/utils/misc/exDIF.csv"
dt <- fread(csv_path)
dt
## Var1 Var2
## 1: 2.70 A
## 2: 3.14 B
## 3: 10.00 A
## 4: -7.00 A
जहां तर्क input
एक स्ट्रिंग का प्रतिनिधित्व करता है:
- फ़ाइल नाम ( उदाहरण के लिए
"filename.csv"
), - एक शेल कमांड जो एक फ़ाइल पर कार्य करता है ( उदाहरण के लिए
"grep 'word' filename"
), या - इनपुट ही ( उदाहरण के लिए
"input1, input2 \n A, B \n C, D"
)।
fread
वर्ग data.table
की एक वस्तु देता है, जो कि data.able के उपयोग के साथ []
data []
श्रेणी के उपयोग के लिए उपयुक्त, वर्ग data.frame
से विरासत में मिलती है। एक साधारण data.frame वापस करने के लिए, FALSE
लिए data.table
पैरामीटर सेट करें:
df <- fread(csv_path, data.table = FALSE)
class(df)
## [1] "data.frame"
df
## Var1 Var2
## 1 2.70 A
## 2 3.14 B
## 3 10.00 A
## 4 -7.00 A
टिप्पणियाँ
-
fread
के रूप में सभी एक ही विकल्प नहीं हैread.table
। एक अनुपलब्ध तर्क हैna.comment
, जो अवांछित व्यवहार में ले सकता है यदि स्रोत फ़ाइल में#
शामिल है। -
fread
उपयोग केवल"
quote
पैरामीटर के लिए है। -
fread
कुछ (5) लाइनों का उपयोग करता है चर प्रकार का अनुमान लगाना।
मैट्रिक्स के रूप में .tsv फ़ाइलें आयात करना (मूल R)
बहुत से लोग फ़ाइल का पथ file.path
समय फ़ाइल का उपयोग नहीं करते हैं। लेकिन अगर आप विंडोज, मैक और लिनक्स मशीनों पर काम कर रहे हैं, तो आमतौर पर paste
बजाय रास्ते बनाने के लिए इसका इस्तेमाल करना अच्छा होता है।
FilePath <- file.path(AVariableWithFullProjectPath,"SomeSubfolder","SomeFileName.txt.gz")
Data <- as.matrix(read.table(FilePath, header=FALSE, sep ="\t"))
आमतौर पर यह ज्यादातर लोगों के लिए पर्याप्त है।
कभी-कभी ऐसा होता है कि मैट्रिक्स आयाम इतने बड़े होते हैं कि मेमोरी आवंटन की प्रक्रिया को मैट्रिक्स में पढ़ते समय ध्यान में रखा जाना चाहिए, जिसका अर्थ है लाइन द्वारा मैट्रिक्स लाइन में पढ़ना।
पिछले उदाहरण को लें, इस मामले में FilePath
में FilePath
% कोशिकाओं के साथ 8970 8970
आयाम वाली एक फ़ाइल है।
system.time(expr=Data<-as.matrix(read.table(file=FilePath,header=FALSE,sep=" ") ))
system.time
कहना है कि फ़ाइल को पढ़ने के लिए 267 सेकंड का समय लिया गया था।
user system elapsed
265.563 1.949 267.563
इसी तरह इस फाइल को लाइन बाय लाइन पढ़ा जा सकता है,
FilePath <- "SomeFile"
connection<- gzfile(FilePath,open="r")
TableList <- list()
Counter <- 1
system.time(expr= while ( length( Vector<-as.matrix(scan(file=connection, sep=" ", nlines=1, quiet=TRUE)) ) > 0 ) {
TableList[[Counter]]<-Vector
Counter<-Counter+1
})
user system elapsed
165.976 0.060 165.941
close(connection)
system.time(expr=(Data <- do.call(rbind,TableList)))
user system elapsed
0.477 0.088 0.565
वहाँ भी है futile.matrix
पैकेज जो एक read.matrix
विधि को लागू करता है, कोड खुद को वही futile.matrix
जो उदाहरण 1 में वर्णित है।
निर्यात .csv फ़ाइलें
बेस आर का उपयोग करके निर्यात करना
डेटा का उपयोग कर एक CSV फ़ाइल में लिखा जा सकता है write.csv()
:
write.csv(mtcars, "mtcars.csv")
सामान्य रूप से निर्दिष्ट मापदंडों में row.names = FALSE
और na = ""
।
पैकेज का उपयोग करके निर्यात करना
readr::write_csv
की तुलना में काफी तेजी से होता है write.csv
और न लिखने पंक्ति के नाम से करता है।
library(readr)
write_csv(mtcars, "mtcars.csv")
एकाधिक csv फ़ाइलों को आयात करें
files = list.files(pattern="*.csv")
data_list = lapply(files, read.table, header = TRUE)
यह हर फ़ाइल को पढ़ता है और इसे सूची में जोड़ता है। बाद में, यदि सभी डेटा.फ्रेम में समान संरचना होती है तो उन्हें एक बड़े डेटा में जोड़ा जा सकता है।
df <- do.call(rbind, data_list)
निश्चित-चौड़ाई वाली फ़ाइलें आयात करना
निश्चित-चौड़ाई वाली फाइलें पाठ फाइलें हैं जिसमें कॉलम किसी भी चरित्र के सीमांकक द्वारा अलग नहीं किए जाते हैं, जैसे ,
या ;
, बल्कि एक निश्चित वर्ण लंबाई ( चौड़ाई ) है। डेटा आमतौर पर सफेद स्थानों के साथ गद्देदार होता है।
एक उदाहरण:
Column1 Column2 Column3 Column4Column5
1647 pi 'important' 3.141596.28318
1731 euler 'quite important' 2.718285.43656
1979 answer 'The Answer.' 42 42
मान लें कि यह डेटा टेबल स्थानीय फ़ाइल constants.txt
में वर्किंग डायरेक्टरी में मौजूद है।
बेस आर के साथ आयात करना
df <- read.fwf('constants.txt', widths = c(8,10,18,7,8), header = FALSE, skip = 1)
df
#> V1 V2 V3 V4 V5
#> 1 1647 pi 'important' 3.14159 6.28318
#> 2 1731 euler 'quite important' 2.71828 5.43656
#> 3 1979 answer 'The Answer.' 42 42.0000
ध्यान दें:
- कॉलम शीर्षक को किसी वर्ण द्वारा अलग करने की आवश्यकता नहीं है (
Column4Column5
) -
widths
पैरामीटर प्रत्येक स्तंभ की चौड़ाई को परिभाषित करता है - गैर-पृथक हेडर
read.fwf()
साथ पढ़ने योग्य नहीं हैं
रीडर के साथ आयात करना
library(readr)
df <- read_fwf('constants.txt',
fwf_cols(Year = 8, Name = 10, Importance = 18, Value = 7, Doubled = 8),
skip = 1)
df
#> # A tibble: 3 x 5
#> Year Name Importance Value Doubled
#> <int> <chr> <chr> <dbl> <dbl>
#> 1 1647 pi 'important' 3.14159 6.28318
#> 2 1731 euler 'quite important' 2.71828 5.43656
#> 3 1979 answer 'The Answer.' 42.00000 42.00000
ध्यान दें:
- रीडर का
fwf_*
हेल्पर फ़ंक्शन कॉलम की लंबाई निर्दिष्ट करने के वैकल्पिक तरीके प्रदान करता है, जिसमें स्वचालित अनुमानfwf_empty
(fwf_empty
) शामिल है - बेस आर की तुलना में रीड्र तेज है
- कॉलम शीर्षक डेटा फ़ाइल से स्वचालित रूप से आयात नहीं किया जा सकता है