मैं आर में डेटा पढ़ने के लिए read.csv या read.csv2 का उपयोग कर सकता हूं लेकिन मुझे जिस समस्या का सामना करना पड़ा वह यह है कि मेरा विभाजक एक वर्ण के बजाय एक बहु-बाइट स्ट्रिंग है। मैं इससे कैसे निपट सकता हूं?एक बहु-बाइट विभाजक के साथ जीएनयू आर में एक टेक्स्ट फ़ाइल कैसे पढ़ा जाए?
उत्तर
प्रदान उदाहरण डेटा में मदद मिलेगी। हालांकि, आप अपनी आवश्यकताओं के अनुसार निम्नलिखित अनुकूलित कर सकते हैं। मैं 'test.csv' के रूप में यह बचाया
1sep2sep3
1sep2sep3
1sep2sep3
1sep2sep3
1sep2sep3
1sep2sep3
1sep2sep3
:
मैं एक उदाहरण डेटा फ़ाइल है, जो एक सिर्फ एक पाठ निम्न फ़ाइल है जिसमें बनाया। अलगाव चरित्र 'सीईपी' स्ट्रिंग है। मैं read.csv()
का उपयोग करता scan()
है, जो केवल sep
के लिए एक एकल वर्ण को स्वीकार करता है लगता है। इसके चारों ओर पाने के लिए, निम्नलिखित पर विचार:
dat <- readLines('test.csv')
dat <- gsub("sep", " ", dat)
dat <- textConnection(dat)
dat <- read.table(dat)
readLines()
बस में लाइनों पढ़ता gsub
एक भी ' '
के लिए बहु-चरित्र जुदाई स्ट्रिंग विकल्प, या जो कुछ भी अपने डेटा के लिए सुविधाजनक है।। फिर textConnection()
और read.data()
आसानी से सब कुछ वापस पढ़ता है। छोटे डेटासेट के लिए, यह ठीक होना चाहिए। यदि आपके पास बहुत बड़ा डेटा है, तो बहु-वर्ण पृथक्करण स्ट्रिंग को प्रतिस्थापित करने के लिए एडब्ल्यूके जैसे कुछ प्रीप्रोकैसिंग पर विचार करें। उपरोक्त http://tolstoy.newcastle.edu.au/R/e4/help/08/04/9296.html से है।
अद्यतन अपनी टिप्पणी के बारे में, अगर आप अपने डेटा में रिक्त स्थान है, एक अलग प्रतिस्थापन विभाजक का उपयोग करें। निम्नलिखित समारोह के साथ,
1sep2 2sep3
1sep2 2sep3
1sep2 2sep3
1sep2 2sep3
1sep2 2sep3
1sep2 2sep3
1sep2 2sep3
तब:: करने के लिए test.csv
को बदलने पर विचार
readMulti <- function(x, sep, replace, as.is = T)
{
dat <- readLines(x)
dat <- gsub(sep, replace, dat)
dat <- textConnection(dat)
dat <- read.table(dat, sep = replace, as.is = as.is)
return(dat)
}
प्रयास करें:
readMulti('test.csv', sep = "sep", replace = "\t", as.is = T)
यहाँ, आप टैब (\t
) के साथ मूल विभाजक बदलें। as.is
read.table()
पर तारों को पढ़ने के लिए कारकों को पढ़ने से रोकने के लिए पास किया गया है, लेकिन यह आपका कॉल है। आप अपने डेटा के भीतर और अधिक जटिल सफेद स्थान है, तो आप AWK, पर्ल, आदि के साथ read.table()
सहायक, या पूर्व की प्रक्रिया में quote
तर्क मिल सकती है
कुछ crippledlambda के strsplit()
के साथ इसी तरह मध्यम आकार डेटा के लिए सबसे अधिक संभावना बराबर है। यदि प्रदर्शन एक मुद्दा बन जाता है, तो दोनों को आजमाएं और देखें कि आपके लिए कौन सा काम करता है।
के नीचे अपना समाधान पसंद है। Read.table एक ही त्रुटि संदेश प्राप्त होगा।jthetzel का सुझाव अच्छा लगता है। असल में मैं पहले से ही आर में पढ़ने से पहले कच्चे डेटा को संसाधित करने के लिए बहुत अधिक लाभ उठाता हूं। लेकिन सवाल यह है कि हम gsub के बाद नए अलगाव चरित्र में चरित्र से कैसे निपट सकते हैं (कहें, हमारे पास एक ' 'अपने नमूना कोड में मूल्य के भीतर)। – RobinMin
@RobinMin उपरोक्त प्रति अद्यतन एक अलग प्रतिस्थापन विभाजक आज़माएं। – jthetzel
इस मामले में आप textConnection(txt)
को अपने फ़ाइल नाम से बदल सकते हैं, लेकिन अनिवार्य रूप से आप strsplit
के आसपास एक कोड या फ़ंक्शन बना सकते हैं। यहाँ मैं आपको एक हैडर रेखा है संभालने हूँ, लेकिन आप निश्चित रूप से एक header
तर्क को परिभाषित करने और नीचे कार्य के आधार पर अपने डेटा फ्रेम के निर्माण के सामान्यीकरण दे सकते हैं:
> read.multisep <- function(File,sep) {
+ Lines <- readLines(File)
+ Matrix <- do.call(rbind,strsplit(Lines,sep,fixed=TRUE))
+ DataFrame <- structure(data.frame(Matrix[-1,]),names=Matrix[1,]) ## assuming header is present
+ DataFrame[] <- lapply(DataFrame,type.convert) ## automatically convert modes
+ DataFrame
+ }
>
> example <- "a#*&b#*&c
+ 1#*&2#*&3
+ 4#*&5#*&6"
>
> read.multisep(textConnection(example),sep="#*&")
a b c
1 1 2 3
2 4 5 6
read.multisep मेरे लिए ठीक काम करता है ~! धन्यवाद @ jthetzel – RobinMin
- 1. आर के साथ .arff फ़ाइल कैसे पढ़ा जाए?
- 2. सी ++ में बढ़ती हुई टेक्स्ट फ़ाइल को कैसे पढ़ा जाए?
- 3. Android में टेक्स्ट फ़ाइल को कैसे पढ़ा जाए?
- 4. वेब से एंड्रॉइड में टेक्स्ट फ़ाइल कैसे पढ़ा जाए?
- 5. ग्रोवी में एक स्ट्रिंग में फ़ाइल को कैसे पढ़ा जाए?
- 6. सी # में फ़ाइल बाइनरी कैसे पढ़ा जाए?
- 7. आर में एस्ट्रोफेश युक्त एक .csv फ़ाइल को कैसे पढ़ा जाए?
- 8. PowerShell के साथ XML फ़ाइल में सीडीएटीए कैसे पढ़ा जाए?
- 9. एक जार फ़ाइल से फ़ाइल को कैसे पढ़ा जाए?
- 10. विंडोज सेवा से टेक्स्ट फ़ाइल कैसे पढ़ा जाए?
- 11. टेक्स्ट फ़ाइल तेज/स्मार्ट से कैसे पढ़ा जाए?
- 12. बैच फ़ाइलें: फ़ाइल को कैसे पढ़ा जाए?
- 13. PHP के साथ एक छवि को कैसे पढ़ा जाए?
- 14. इंटरनेट संसाधन से टेक्स्ट फ़ाइल को कैसे पढ़ा जाए?
- 15. एंड्रॉइड में सीएसवी फ़ाइल कैसे पढ़ा जाए?
- 16. बिल्कुल एक पंक्ति को कैसे पढ़ा जाए?
- 17. numpy के साथ बाइनरी फ़ाइल का हिस्सा कैसे पढ़ा जाए?
- 18. एक WPF UserControl में पास पैरामीटर को कैसे पढ़ा जाए?
- 19. एमपी 3 फ़ाइल टैग कैसे पढ़ा जाए
- 20. मल्टीइंडेक्स के साथ एक ASCII फ़ाइल से पांडस डेटाफ्रेम कैसे लिख/पढ़ा जाए?
- 21. फ़ाइल सामग्री को एक चर में एक चर में कैसे पढ़ा जाए?
- 22. हैडूप अनुक्रमिक फ़ाइल को कैसे पढ़ा जाए?
- 23. स्कैला में, एक सरल सीएसवी फ़ाइल को अपनी पहली पंक्ति में शीर्षलेख रखने के लिए कैसे पढ़ा जाए?
- 24. यूआरएल से सीएसवी फ़ाइल कैसे पढ़ा जाए?
- 25. सी के समान पायथन में फ़ाइल शीर्षलेख कैसे पढ़ा जाए?
- 26. एक विभाजक
- 27. एक स्ट्रीम को दूसरे में कैसे पढ़ा जाए?
- 28. जावमेल के साथ दृष्टिकोण के ईमेल को कैसे पढ़ा जाए?
- 29. किसी JSON ऑब्जेक्ट (फ़ाइल में) से डेटा को आर में कैसे पढ़ा जाए?
- 30. .NET में एक बड़ी (1 जीबी) txt फ़ाइल कैसे पढ़ा जाए?
अपने एकाधिक-बाइट स्ट्रिंग क्या है? – jthetzel
मेरा मानना है कि यदि आप अधिक सामान्य read.table() और sep तर्क देखते हैं, तो आप एकाधिक-बाइट स्ट्रिंग का उपयोग कर सकते हैं। – mweylandt
@mweylandt मुझे लगता है कि 'read.table() '' sp' केवल एकल बाइट स्वीकार करता है (' स्कैन() 'के लिए)। – jthetzel