निम्नलिखित आर data.frame कन्वर्ट करने के लिए कोशिश कर रहा है:Dplyr सशर्त विंडोइंग
structure(list(Time=c("09:30:01" ,"09:30:29" ,"09:35:56", "09:37:17" ,"09:37:21" ,"09:37:28" ,"09:37:35" ,"09:37:51" ,"09:42:11" ,"10:00:31"),
Price=c(1,2,3,4,5,6,7,8,9,10),
Volume=c(100,200,300,100,200,300,100,200,600,100)),
.Names = c("Time", "Price", "Volume"),
row.names = c(NA,10L),
class = "data.frame")
Time Price Volume
1 09:30:01 1 100
2 09:30:29 2 200
3 09:35:56 3 300
4 09:37:17 4 100
5 09:37:21 5 200
6 09:37:28 6 300
7 09:37:35 7 100
8 09:37:51 8 200
9 09:42:11 9 600
10 10:00:31 10 100
इस
Time Price Volume Bin
1 09:30:01 1 100 1
2 09:30:29 2 200 1
3 09:35:56 3 200 1
4 09:35:56 3 100 2
5 09:37:17 4 100 2
6 09:37:21 5 200 2
7 09:37:28 6 100 2
8 09:37:28 6 200 3
9 09:37:35 7 100 3
10 09:37:51 8 200 3
11 09:42:11 9 500 4
12 09:42:11 9 100 5
13 10:00:31 10 100 5
अनिवार्य रूप में
, यह मात्रा पर संचयी रकम गणना कर रहा है और eachtime 500 binning का उल्लंघन कर रहा है। तो, बिन 1 100 + 200 + 200 है, वॉल्यूम के साथ 09:35:56 को 200/100 में विभाजित किया गया और एक नई पंक्ति डाली गई और बिन काउंटर बढ़ गया।
यह आधार आर के साथ अपेक्षाकृत सरल है लेकिन मैं सोच रहा था कि वहां एक और अधिक सुरुचिपूर्ण और उम्मीदवार तेजी से तेज तरीका है।
चीयर्स
अद्यतन:
धन्यवाद @Frank और @AntoniosK।
अपने प्रश्न को हल करने के लिए वॉल्यूम मानों की सीमा सभी सकारात्मक पूर्णांक मान 1 से 10k तक है।
मैं दोनों दृष्टिकोणों और dplyr microbenchmarked थोड़ा तेज था, लेकिन इसमें अधिक नहीं, ~ 200k पंक्तियों के साथ ऊपर के डेटासेट पर।
सच तेज प्रतिक्रिया और सहायता
शायद आपको "अपेक्षाकृत सरल" तरीका दिखाना चाहिए जिसकी आपने कोशिश की है। मुझे लगता है कि एक सुरुचिपूर्ण डिपर दृष्टिकोण नहीं है, लेकिन आपके बेस आर टाइल में सुधार के लिए जगह हो सकती है। – Frank
क्या आपके पास हमेशा 100,200 आदि जैसे मान हैं? या यह एक सरलीकृत मामला है? – AntoniosK
http://stackoverflow.com/questions/15466880/cumulative-sum-until-maximum-reached-then-repeat-from-zero-in-the-next-row पर एक नज़र डालें –