2013-04-15 11 views
7

मैं गुम डेटा के साथ समस्याओं की क्या ज़रूरत है, लेकिन मैं NAS की जरूरत नहीं है में रैखिक प्रक्षेप के साथ चिड़ियाघर डेटा - अन्यथा को संभालने के लिए आसान होगा ...जोड़ें लापता XTS/आर

मेरे डेटा इस तरह दिखता है:

time, value 
2012-11-30 10:28:00, 12.9 
2012-11-30 10:29:00, 5.5 
2012-11-30 10:30:00, 5.5 
2012-11-30 10:31:00, 5.5 
2012-11-30 10:32:00, 9 
2012-11-30 10:35:00, 9 
2012-11-30 10:36:00, 14.4 
2012-11-30 10:38:00, 12.6 

जैसा कि आप देख सकते हैं - कुछ मिनट मूल्य गुम हैं - यह xts/zoo है इसलिए मैं एक सूचकांक के रूप में दिनांक सेट करने के लिए .POSIXct ... का उपयोग करता हूं। एक पूर्ण टीएस प्राप्त करने के लिए लापता timesteps कैसे जोड़ें? मैं लापता मूल्यों को रैखिक इंटरपोलेशन से भरना चाहता हूं।

आपकी मदद के लिए धन्यवाद!

+0

गॉट एक संभावित जवाब: http://stackoverflow.com/questions/15114834 इसके अलावा, अगर आप भी na.approx में 'xout' तर्क का लाभ लेने, आप अब विलय करने की जरूरत है/interpolate-zoo-object-with-missing-date? rq = 1 चिड़ियाघर के साथ काम करता है - लेकिन बाद में मैं xts पर वापस जा सकता हूं। फिर भी "गलत" मानों के साथ समस्या - कैसे फ़िल्टर करें और NA पर सेट करें? धन्यवाद! –

+0

यह भी देखें http://stackoverflow.com/questions/11897169/change-nas-to-interpolated-flat-bars –

उत्तर

9

आप merge सभी तिथियों के साथ वेक्टर के साथ अपना डेटा कर सकते हैं। इसके बाद आप रिक्त स्थान भरने के लिए na.approx का उपयोग कर सकते हैं (इस मामले में NA)।

data1 <-read.table(text="time, value 
2012-11-30-10:28:00, 12.9 
2012-11-30-10:29:00, 5.5 
2012-11-30-10:30:00, 5.5 
2012-11-30-10:31:00, 5.5 
2012-11-30-10:32:00, 9 
2012-11-30-10:35:00, 9 
2012-11-30-10:36:00, 14.4 
2012-11-30-10:38:00, 12.6", header = TRUE, sep=",", as.is=TRUE) 
times.init <-as.POSIXct(strptime(data1[,1], '%Y-%m-%d-%H:%M:%S')) 
data2 <-zoo(data1[,2],times.init) 
data3 <-merge(data2, zoo(, seq(min(times.init), max(times.init), "min"))) 
data4 <-na.approx(data3) 
4

P Lapointe को एक अच्छे उत्तर के लिए धन्यवाद।

data1 <-read.table(text="time, value 
2012-11-30-10:28:00, 12.9 
2012-11-30-10:29:00, 5.5 
        2012-11-30-10:30:00, 5.5 
        2012-11-30-10:31:00, 5.5 
        2012-11-30-10:32:00, 9 
        2012-11-30-10:35:00, 9 
        2012-11-30-10:36:00, 14.4 
        2012-11-30-10:38:00, 12.6", header = TRUE, sep=",", as.is=TRUE) 
times.init <-as.POSIXct(strptime(data1[,1], '%Y-%m-%d-%H:%M:%S')) 
data2 <-zoo(data1[,2],times.init) 
data2 
data4 <- na.approx(object=data2, 
      xout=seq(min(times.init), max(times.init), "min")) 
संबंधित मुद्दे