2012-02-21 11 views
15

मैं आर में काम कर रहा हूं और सीएसवी पढ़ रहा हूं जिसमें पहले कॉलम में दिनांक और समय है। मैं इस सीएसवी फ़ाइल को पहले आर में आयात करना चाहता हूं और फिर इसे ज़ू ओबेक्ट में परिवर्तित करना चाहता हूं।दिनांक और समय के साथ सीएसवी पढ़ना

मैं आर में

EURUSD <- as.xts(read.zoo("myfile.csv",sep=",",tz="",header=T)) 

मेरे csv फ़ाइल कोड का उपयोग कर रहा प्रारूप में डेटा होते हैं:

Date,Open,Low,High,Close 
2006-01-02 10:01:00,2822.9,2825.45,2822.1,2824.9 
2006-01-02 10:02:00,2825,2825.9,2824,2824.95 
2006-01-02 10:03:00,2824.55,2826.45,2824,2826.45 
2006-01-02 10:04:00,2826.45,2826.45,2824.9,2825.5 
2006-01-02 10:05:00,2825.15,2825.5,2824,2824.85 
2006-01-02 10:06:00,2824.7,2825.5,2823.7,2823.8 
2006-01-02 10:07:00,2823.95,2824.45,2823.55,2824 
2006-01-02 10:08:00,2824,2824.85,2823.5,2824.85 
2006-01-02 10:09:00,2824.25,2825.45,2824,2825.45 
2006-01-02 10:10:00,2825.2,2827,2825,2827 

जब मैं आरआई में डेटा आयात करने के folowwwing मिल ऊपर आदेश चला त्रुटि:

Error in as.POSIXlt.character(x, tz, ...) : 
    character string is not in a standard unambiguous format 

मैंने इस मुद्दे को हल करने के सभी तरीकों को खोजने का प्रयास किया। मैंने नेट पर इतने सारे ब्लॉग पढ़े लेकिन कोई भी विधि मेरे लिए काम नहीं करती है।

मुझे आशा है कि कोई मेरी मदद करेगा।

+1

लगता है जैसे आपके डेट कॉलम में कुछ ऐसा है जो इसे परेशान कर रहा है। शायद एक भयानक खाली, "-", ",", "n.a." या कुछ इस तरह का। –

+0

क्या आप सुनिश्चित हैं कि आपका 'सीपी' अल्पविराम है?आपका उदाहरण सीएसवी फ़ाइल प्रारूप इसके टैब की तरह दिखता है? –

+0

यह अल्पविराम अलग है। मैं नोटपैड में अपनी सीएसवी फ़ाइल खोलता हूं और यह स्पष्ट रूप से कॉमा सेपरेटेड – user395882

उत्तर

5

ऐसा लगता है कि त्रुटि यह नहीं है कि आपकी तिथि कॉलम किस प्रारूप में है (यह काम नहीं कर सकता - दिनांक/महीना/वर्ष? महीना/तिथि/वर्ष? आदि)।

आप आर बता सकते हैं क्या प्रारूप यह read.zoo करने के लिए format तर्क का उपयोग (विनिर्देशक आप उपयोग कर सकते हैं के लिए ?strptime देखें) में है।

उदाहरण के लिए, अगर यह किया गया था तारीख/माह/वर्ष घंटा (24-घंटे घड़ी): मिनट, तुम कर सकते हो:

EURUSD <- as.xts(read.zoo(file_name, 
          sep=',', 
          tz='', 
          header=T, 
          format='%d/%m/%Y %H:%M:%S')) # see the 'format' argument? 

(नोट - अपने प्रश्न में csv डेटा का टुकड़ा आप प्रतिसाद नहीं दिखाया कॉमा-सीमांकित नहीं है)।

+0

मैंने read.zoo ("सी:/यूसर/पैरामेट/डीस्कटॉप /test/eurusd.csv", sep = ",", tz = "", format = "का उपयोग करने का प्रयास किया। % वाई-% एम-% डी% एच:% एम ", हेडर = टी) लेकिन यह मुझे त्रुटि देता है: read.zoo में त्रुटि (" सी: /Users/ParamJeet/Desktop/test/eurusd.csv ", sep = ",", इंडेक्स में डेटा पंक्तियों पर 13428 खराब प्रविष्टियां हैं: 323559 323560 323561 323562 323563 – user395882

+0

फिर उन आर पर एक नज़र डालें आप में cws csv - मेरा अनुमान है कि उनके पास एक अलग प्रारूप है। –

+0

यदि मैं अपना नोटपैड खोलता हूं तो यह दिनांक, ओपन, लो, हाई, 2006-01-02 10: 01: 00,2822.9,2825.45,2822.1,2824.9 जैसा दिखता है यदि मैं एक्सेल डेटा में खोलता हूं तो दिनांक \t खोलें \t कम \t उच्च \t बंद 1/2/2006 10:01 \t 2822,9 \t 2825,45 \t 2822,1 \t 2824,9 1/2/2006 10:02 2825,9 2824,95 यह इस अंतर समस्या खड़ी कर रहा है। – user395882

8

हालांकि यह एक पुरानी पोस्ट प्रतीत होता है, लेकिन मैं अपना अनुभव साझा करना चाहता हूं क्योंकि मैं समय श्रृंखला सीएसवी डेटा को आर में लोड करने की कोशिश कर रहा एक बहुत ही निराशाजनक प्रक्रिया से गुज़र रहा हूं, ऊपर की समस्या यह है कि एक्सेल प्रारूप के प्रारूप को बदलता है निम्नलिखित %m/%d/%Y %H:%M पर दिनांक और समय, मूल रूप से यह सेकंड को छोड़ देता है। यदि आप इस प्रारूप के साथ एक फ़ाइल पढ़ते हैं और आपके पास दूसरा रिज़ॉल्यूशन डेटा है तो आपको समान दिनांक समय संयोजन मिलते हैं। इसलिए आप केवल उस प्रारूप का उपयोग नहीं कर सकते जो सेकंड को अनदेखा करता है क्योंकि यह निम्न त्रुटि संदेश देता है। "वर्ण स्ट्रिंग एक मानक संगत प्रारूप में नहीं है"

समाधान उत्कृष्टता पर वापस जाना है और दिनांक समय कॉलम के प्रारूप को %m/%d/%Y %H:%M:%S में बदलना है। आप वांछित प्रारूप में निकटतम दिनांक समय डिफ़ॉल्ट स्वरूप चुनकर ऐसा कर सकते हैं (इस मामले में यह %m/%d/%Y %H:%M है और फिर मैन्युअल रूप से :ss को अंत में जोड़ें। फ़ाइल को एक सीएसवी फ़ाइल के रूप में सहेजें और फिर निम्न आदेश का उपयोग करके इसे पढ़ें:

Data<-read.zoo("file.csv", tz="", header=TRUE,format='%m/%d/%Y %H:%M:%S') 

यह मेरे लिए काम किया है और मैं 900K के बारे में पंक्तियों है कि एक फ़ाइल को पढ़ने।

0

, as.xtc का उपयोग करते समय तिथि स्तंभ एक चरित्र की तरह है बिना फ़ाइल पढ़ें। और फिर परिवर्तित POSIXlt वर्ग के लिए दिनांक इस समारोह के साथ:

library("chron") 
DateConvert<-function(x){ 
    dt<-strsplit(x,split = "T") 
    dt<-unlist(dt) 
    d1<-dt[1:length(dt) %% 2==1 ] 
    d2<-dt[1:length(dt) %% 2==0 ] 
    a<-as.POSIXlt(chron(dates.=d1, times.=d2, format = c(dates = "y-m-d", times = "h:m:s"))) 
    return(a) 
} 

DateConvert('Your column') 

और फिर अपने डेटा पर फ़ंक्शन as.xts का उपयोग करें।

संबंधित मुद्दे