2010-05-27 7 views
7

आर में मानते हुए, मेरे पास समय का प्रतिनिधित्व करने वाले पहले कॉलम के साथ डेटा.फ्रेम है (POSIXct के रूप में)। शेष कॉलम (उदा।, कॉलम 2) संख्यात्मक डेटा हैं।मैं डेटाफ्रेम में अंतराल में समय कॉलम को त्वरित रूप से कैसे समूहित करूं?

मैं 3 मिनट के अंतराल में समयबद्ध करना चाहता हूं। प्रत्येक अंतराल उन मानों का औसत होगा जो उस विशेष अंतराल में पड़ते हैं।

अभी, मेरे पास एक लूप है जो समय कॉलम के माध्यम से पुनरावृत्त करता है और फ्लाई पर अंतराल उत्पन्न करता है। मैं सोच रहा हूं कि एक ही चीज़ को पूरा करने के लिए एक और शानदार तरीका है?

अग्रिम धन्यवाद।

डेरेक

+0

इसी प्रकार के प्रश्न http://stackoverflow.com/questions/2441136/what-is-an-efficient- विधि-के-विभाजन-और-समेकित-अंतराल-से-बार – Marek

उत्तर

9

मुझे लगता है कि निम्नलिखित की तरह एक आदेश, मूल्यों है कि 3 मिनट के अंतराल में गिर जाते हैं की एक सूची लौट आते हैं। (v dataframe का नाम है और datecol तारीख स्तंभ का नाम है)

library(plyr) 

v<-data.frame(datecol=as.POSIXct(c(
    "2010-01-13 03:02:38 UTC", 
    "2010-01-13 03:03:14 UTC", 
    "2010-01-13 03:05:52 UTC", 
    "2010-01-13 03:07:42 UTC", 
    "2010-01-13 03:09:38 UTC", 
    "2010-01-13 03:10:14 UTC", 
    "2010-01-13 03:12:52 UTC", 
    "2010-01-13 03:13:42 UTC", 
    "2010-01-13 03:15:42 UTC", 
    "2010-01-13 03:16:38 UTC", 
    "2010-01-13 03:18:14 UTC", 
    "2010-01-13 03:21:52 UTC", 
    "2010-01-13 03:22:42 UTC", 
    "2010-01-13 03:24:19 UTC", 
    "2010-01-13 03:25:19 UTC" 
)), x = cumsum(runif(15)*10),y=cumsum(runif(15)*20)) 


dlply(v,.(cut(datecol,"3 min")),"[") 
+0

क्या आप वाकई POSIXct प्रकारों पर 'कट() 'कर सकते हैं? जब मैंने कोशिश की तो मुझे त्रुटियां मिलीं। –

+0

@ डिर्क एडडेलबुटेल: मैंने डेटाफ्रेम को शामिल करने के लिए संपादित किया जिसे मैं परीक्षण कर रहा था –

6

चिड़ियाघर और XTS संकुल इस पर उत्कृष्टता और प्रचुर प्रलेखन की है। यहाँ एक पूर्व डिब्बाबंद to.minutes3 है, लेकिन मैं भी कस्टम कार्यों हाथ से ही कर के साथ प्रयोग किया aggregate.zoo():

> library(xts) 
> x <- xts(cumsum(abs(rnorm(20))), Sys.time()+60*(0:19)) 
> x 
         [,1] 
2010-05-27 14:44:25 1.2870 
2010-05-27 14:45:25 3.3187 
2010-05-27 14:46:25 4.0976 
2010-05-27 14:47:25 5.3304 
2010-05-27 14:48:25 6.9415 
2010-05-27 14:49:25 7.4508 
2010-05-27 14:50:25 8.5281 
2010-05-27 14:51:25 8.7145 
2010-05-27 14:52:25 9.0120 
2010-05-27 14:53:25 10.5063 
2010-05-27 14:54:25 11.6312 
2010-05-27 14:55:25 11.9813 
2010-05-27 14:56:25 13.8883 
2010-05-27 14:57:25 14.1696 
2010-05-27 14:58:25 14.3269 
2010-05-27 14:59:25 14.6768 
2010-05-27 15:00:25 15.4926 
2010-05-27 15:01:25 16.8408 
2010-05-27 15:02:25 18.7739 
2010-05-27 15:03:25 19.7815 
> to.minutes3(x) 
        x.Open x.High x.Low x.Close 
2010-05-27 14:44:25 1.2870 1.2870 1.2870 1.2870 
2010-05-27 14:47:25 3.3187 5.3304 3.3187 5.3304 
2010-05-27 14:50:25 6.9415 8.5281 6.9415 8.5281 
2010-05-27 14:53:25 8.7145 10.5063 8.7145 10.5063 
2010-05-27 14:56:25 11.6312 13.8883 11.6312 13.8883 
2010-05-27 14:59:25 14.1696 14.6768 14.1696 14.6768 
2010-05-27 15:02:25 15.4926 18.7739 15.4926 18.7739 
2010-05-27 15:03:25 19.7815 19.7815 19.7815 19.7815 
> 
संबंधित मुद्दे