मुझे उत्सुकता है कि अगर कोई वहां घुमावदार आंकड़ों (रोलिंग माध्य, औसत, प्रतिशत, आदि) की गणना करने के लिए एक (तेज़) तरीके से आ सकता है समय के अंतराल (खिड़की)।आर - एक परिवर्तनीय अंतराल पर रोलिंग आंकड़ों की गणना करने के लिए तेज़ तरीका
ऐसा लगता है कि किसी को यादृच्छिक रूप से समय के अवलोकन दिए जाते हैं (यानी दैनिक, या साप्ताहिक डेटा नहीं, अवलोकनों में समय की टिकटें होती है, जैसे कि टिक डेटा में), और मान लीजिए कि आप केंद्र और फैलाव आंकड़े देखना चाहते हैं आप समय के अंतराल को चौड़ा और कसने में सक्षम हैं जिन पर इन आंकड़ों की गणना की जाती है।
मैंने लूप के लिए एक सरल बनाया जो ऐसा करता है। लेकिन यह स्पष्ट रूप से बहुत धीमा चलता है (वास्तव में मुझे लगता है कि मेरा लूप अभी भी डेटा की एक छोटी नमूना पर चल रहा है जिसे मैंने अपनी गति का परीक्षण करने के लिए स्थापित किया है)। मैं ऐसा करने के लिए ddply की तरह कुछ पाने की कोशिश कर रहा हूं - जो दैनिक आंकड़ों के लिए दौड़ने के लिए कठोर लगता है - लेकिन मैं इसके बाहर अपना रास्ता काम नहीं कर सकता।
उदाहरण:
नमूना सेट अप:!
df <- data.frame(Date = runif(1000,0,30))
df$Price <- I((df$Date)^0.5 * (rnorm(1000,30,4)))
df$Date <- as.Date(df$Date, origin = "1970-01-01")
उदाहरण समारोह (जो वास्तव में कई टिप्पणियों के साथ धीमी गति से चलाता है
SummaryStats <- function(dataframe, interval){
# Returns daily simple summary stats,
# at varying intervals
# dataframe is the data frame in question, with Date and Price obs
# interval is the width of time to be treated as a day
firstDay <- min(dataframe$Date)
lastDay <- max(dataframe$Date)
result <- data.frame(Date = NULL,
Average = NULL, Median = NULL,
Count = NULL,
Percentile25 = NULL, Percentile75 = NULL)
for (Day in firstDay:lastDay){
dataframe.sub = subset(dataframe,
Date > (Day - (interval/2))
& Date < (Day + (interval/2)))
nu = data.frame(Date = Day,
Average = mean(dataframe.sub$Price),
Median = median(dataframe.sub$Price),
Count = length(dataframe.sub$Price),
P25 = quantile(dataframe.sub$Price, 0.25),
P75 = quantile(dataframe.sub$Price, 0.75))
result = rbind(result,nu)
}
return(result)
}
आपका सलाह स्वागत किया जाएगा
मुझे इसी तरह की समस्याएं थीं। इन प्रश्नों को देखें: [क्यू 1] (http://stackoverflow.com/questions/15960352/optimized-rolling-functions-on-irregular-time-series-with-time-based-window?rq=1), [Q2] (http://stackoverflow.com/questions/10465998/sliding-time-intervals-for-time-series-data-in-r/20115018#20115018), [क्यू 3] (http://stackoverflow.com/questions/ 7571788/नियमित विश्लेषण-ओवर-अनियमित-समय श्रृंखला? एलक्यू = 1)। मैंने पाया है कि आरसीपीपी कार्यों को लिखना काफी आसान है और इसमें बहुत तेज गति हो सकती है। – kdauria