आर में एक एक्सटीएस समय श्रृंखला को फिर से कैसे नमूना करें?


9

मेरे पास अनियमित रूप से समयबद्ध XTSश्रृंखला है ( POSIXctसूचकांक प्रकार के मान के साथ )।

मैं 10 मिनट के अंतराल पर कहे जाने वाली नई समय श्रृंखला का निर्माण कैसे कर सकता हूं, लेकिन प्रत्येक नमूने के साथ एक गोल समय (13:00:00, 13:10:00, 13:20:00, ...) । यदि एक resampling पल एक मूल श्रृंखला मूल्य पर बिल्कुल नहीं गिरता है, तो मैं पिछले एक को लेना चाहता हूं।


क्या आप एक उदाहरण प्रदान कर सकते हैं?
जोशुआ उलरिच

2
अगर कभी भी एक्सएटीएस के लिए एफएक्यू की सूची होती, तो यह अत्यधिक स्कोर होता। कृपया इधर-उधर देखें, [r] xtsr-sig-Finance अभिलेखागार की खोज करें और उसका उपयोग करें।
डिर्क एडल्डबुलेटेल

जवाबों:


5
library(xts)
?endpoints

उदाहरण के लिए

tmp=zoo(rnorm(1000), as.POSIXct("2010-02-1")+(1:1000)*60)
tmp[endpoints(tmp, "minutes", 20)]

हर 20 मिनट में सदस्यता के लिए। तुम भी बाहर की जाँच करने के लिए चाहते हो सकता है to.minutes, to.dailyआदि


केवल एक छोटा सा मुद्दा है - अगर मेरे पास ..., 14:59, 15:00, ..., यह 14:59 को पुनः प्राप्त करेगा और 15:00 नहीं जैसा मैं चाहता हूं। क्या इसे 15:00 पर वापस करने का कोई तरीका है? मैंने कुछ ऐसा करने की कोशिश की "seconds", 3601, लेकिन यह काम नहीं करता है
मेह डिक

चूंकि टाइमस्टैम्प अनियमित हैं, इसलिए डेटा बिंदुओं के बीच डीटी पर केवल गारंटी दी जा सकती है। वास्तविक बिंदु श्रृंखला के शुरुआती बिंदु पर निर्भर करते हैं। यदि आप अपने शुरुआती बिंदु को एक गोल घंटे में तय करते हैं तो यह आपके जैसा व्यवहार करेगा ... (यह मानते हुए कि आपके पास हर एन मिनट हैं)
डॉ। जी

यह वही है जो मैं नहीं चाहता हूं -
मेह

2

मुझे अभी भी यकीन नहीं है कि आप क्या करने की कोशिश कर रहे हैं और मुझे लगता है कि अभी भी एक उदाहरण मदद करेगा, लेकिन मैंने सोचा कि मुझे लगता है कि आप में रुचि हो सकती है align.time

# Compare this:
tmp[endpoints(tmp, "minutes", 20)]
# with this:
align.time( tmp[endpoints(tmp, "minutes", 20)], n=60*20 )

किसी भी समय श्रृंखला पर विचार करें - बाहर का तापमान। मैं जानना चाहता हूं कि ११:०० बजे दीवार घड़ी में, १२:०० दीवार घड़ी में तापमान क्या है, .... मैं बाद में आपके उदाहरण की जांच करूंगा कि क्या यह ऐसा होता है
मेह

जहां तक ​​मैं बता सकता हूं, एंडपॉइंट का उपयोग करने के बाद संरेखित करने का यह आवेदन एडल चाहता था (मूल प्रश्न में "पिछले एक" लेने के अपने उल्लेख के अलावा)। वैसे भी, यह वही है जो मैं चाहता था, इसलिए धन्यवाद, यहोशू।
राहुल सवानी

वहाँ संरेखित करें का एक संस्करण है। लेकिन नीचे गोल करने के लिए, ऊपर नहीं? यह वही करता है जो मैं चाहता हूं, लेकिन उसके लिए। (BTW, मेरे पास एक कच्चा रास्ता है: अगर a1 मेरी XTS ऑब्जेक्ट है और मैं मिनट के अंतराल पर गोल करना चाहता हूं, तो index(a1)=index(a1)-60;align.time(a1,60))
डैरेन कुक

1
@DarrenCook: इसका एक संस्करण नहीं है align.timeजो ऐसा करता है। भले ही, यह उनकी घटना से पहले के समय के साथ टिप्पणियों को संरेखित करने के लिए एक बुरे विचार की तरह लगता है ।
जोशुआ उलरिच

2
@JoshuaUlrich एक उदाहरण वित्तीय टिक को एक बार में परिवर्तित करना है। 08:00 08:00:00 से 08:00:59 तक मिनट का प्रतिनिधित्व करता है। एक घंटे के बार के रूप में 08:00 08:00:00 से 08:59:59 तक का प्रतिनिधित्व करता है। (यह तब दैनिक सलाखों के काम के अनुरूप है, जहां 2011-11-25 2011-11-24 को नहीं, 2011-11-25 पर व्यापार का प्रतिनिधित्व करता है।) मुझे लगता है कि यह वही व्यवहार था जो ओपी चाहता था।
डैरेन कुक

1

यदि aदूसरी रिज़ॉल्यूशन की प्रविष्टियों के साथ एक xts ऑब्जेक्ट है, तो यह सभी सेकंड्स को बंद कर देता है: इंडेक्स (ए) = ट्रंक (इंडेक्स (ए), "मिन्स")

आप इसे "घंटे" रिज़ॉल्यूशन के लिए राउंड डाउन करने के लिए भी उपयोग कर सकते हैं। लेकिन 10 मिनट समर्थित नहीं है। इसके लिए आपको यह करना होगा:

x=as.POSIXlt(index(a))
x$sec[]=0;x$min[]=x$min[]%/%10
index(a)=x

या a=align.time.down(a,600)जहाँ आपने परिभाषित किया है:

align.time.down=function(x,n){index(x)=index(x)-n;align.time(x,n)}

(मैं अपनी स्क्रिप्ट में उस आखिरी पसंद के साथ गया था।)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.