2013-07-03 6 views
5

मेरे पास एक .csv फ़ाइल है जिसमें एक मिनट के अंतराल पर दिनांक/समय के कॉलम के विरुद्ध डेटा के 4 कॉलम होते हैं। कुछ टाइमस्टैम्प गुम हैं, इसलिए मैं लापता तिथियां/समय उत्पन्न करने की कोशिश कर रहा हूं और उन्हें वाई कॉलम में एनए मान असाइन कर रहा हूं। मैंने पहले इसे अन्य .csv फ़ाइलों के साथ बिल्कुल वही स्वरूपण के साथ किया है, बिना किसी समस्या के। कोड है:आर/चिड़ियाघर: 'order.by' में इंडेक्स प्रविष्टियां अद्वितीय नहीं हैं

# read the csv file 
har10 = read.csv(fpath, header=TRUE); 

# set date 
har10$HAR.TS<-as.POSIXct(har10$HAR.TS,format="%y/%m/%d %H:%M") 

# convert to zoo 
df1.zoo<-zoo(har10[,-1],har10[,1]) #set date to Index 

# merge and generate NAs 
df2 <- merge(df1.zoo,zoo(,seq(start(df1.zoo),end(df1.zoo),by="min")), all=TRUE) 

# write zoo object to .csv file in Home directory 
write.zoo(df2, file = "har10fixed.csv", sep = ",") 

मेरे डेटा इस तरह दिखता है (एक पूरे वर्ष के लिए, कम या ज्यादा) POSIXct है, जो ठीक से जाने के लिए लगता है के लिए रूपांतरण के बाद:

    HAR.TS  C1  C2   C3  C4 
1  2010-01-01 00:00:00 -4390.659 5042.423 -2241.6344 -2368.762 
2  2010-01-01 00:01:00 -4391.711 5042.056 -2241.1796 -2366.725 
3  2010-01-01 00:02:00 -4390.354 5043.003 -2242.5493 -2368.786 
4  2010-01-01 00:03:00 -4390.337 5038.570 -2242.7653 -2371.289 

जब मैं "में बदलने का

Warning message: 
In zoo(har10[, -1], har10[, 1]) : 
    some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique 

मैं डुप्लिकेट प्रविष्टियों के लिए जाँच की लेकिन प्राप्त है कोई परिणाम नहीं:

चिड़ियाघर "कदम मैं निम्नलिखित त्रुटि मिलती है

कोई विचार? मुझे नहीं पता कि मुझे इस फाइल पर यह त्रुटि क्यों मिल रही है, लेकिन उसने पिछले लोगों के लिए काम किया है। धन्यवाद!


संपादित करें: reproducable प्रपत्र:

संपादित करें 2: माफ करना, डाटा/कोड निकालने के लिए है!

+0

मैं जीएमटी लेकिन कोई पासा के लिए यह स्थापित करने की कोशिश की। डेटा जेएसटी (जापान मानक समय) में दर्ज किया गया था इसलिए कोई डीएसटी नहीं है। साथ ही मैंने तीन अन्य .csv फ़ाइलों पर एक ही कोड को सफलतापूर्वक चलाया है, ठीक उसी प्रारूपण के साथ, एक ही दिनांक/समय सीमा सहित एक ही मामले में। यही वह है जो मुझे फेंक रहा है - मुझे नहीं पता कि यह अलग क्यों होना चाहिए। –

+0

मैंने अपनी मूल पोस्ट (ड्रॉपबॉक्स लिंक) और पूर्ण कोड शामिल करने के लिए अपनी मूल पोस्ट संपादित की है। हालांकि, समस्या को हल करने के बाद मुझे इसे हटाना होगा। –

+0

डेटा के पहले भाग के साथ इसे आज़माएं और डेटा का xecond आधा अलग से प्रयास करें और तब तक ऐसा करते रहें जब तक कि आप डेटा की कुछ पंक्तियों के साथ समस्या को पुन: पेश नहीं कर लेते। फिर बस पोस्ट करें। –

उत्तर

8

anyDuplicated(har10) आपको बताता है कि पूर्ण पंक्तियां डुप्लीकेट हैं। चिड़ियाघर इंडेक्स के बारे में चेतावनी दे रहा है, इसलिए आपको anyDuplicated(har10$HAR.TS) चलाना चाहिए। sum(duplicated(har10$HAR.TS)) दिखाएगा कि लगभग 9, 000 डुप्लिकेट डेटाटाइम हैं। पहला डुप्लिकेट पंक्ति 311811 के आसपास है, जहां 10/08/19 13:10 दो बार प्रकट होता है।

+0

धन्यवाद! मैं अभी भी आर के लिए नया हूं लेकिन मुझे विश्वास नहीं है कि यह आसान था। मैं अब दिन के लिए पैकिंग कर रहा हूं लेकिन कल यह जांचूंगा - मुझे लगता है कि आप सही हो सकते हैं। –

+0

हाँ, यह काम करता है। एक बार फिर मेरा डेटा त्रुटियों और डुप्लिकेट के साथ झुका हुआ है - शानदार! :(धन्यवाद! –

1

और संभाल करने के लिए डुप्लिकेट सूचकांक (?zoo और ?aggregate.zoo देख)

## zoo series with duplicated indexes 
z3 <- zoo(1:8, c(1, 2, 2, 2, 3, 4, 5, 5)) 
plot(z3) 

## remove duplicated indexes by averaging 
lines(aggregate(z3, index, mean), col = 2, type = "o") 

## or by using the last observation 
lines(aggregate(z3, index, tail, 1), col = 4) 
संबंधित मुद्दे