पर समूह वेक्टर n
से कम या उसके बराबर तत्वों के योग के आधार पर वेक्टर को समूहबद्ध करना चाहते हैं। निम्नलिखित मान लें,सशर्त राशि
set.seed(1)
x <- sample(10, 20, replace = TRUE)
#[1] 3 4 6 10 3 9 10 7 7 1 3 2 7 4 8 5 8 10 4 8
#Where,
n = 15
उम्मीद उत्पादन समूह मूल्यों के लिए किया जाएगा, जबकि उनके योग < = 15 है, यानी
y <- c(1, 1, 1, 2, 2, 3, 4, 5 ,5, 5, 6, 6, 6, 7, 7, 8, 8, 9, 9, 10)
आप देख सकते हैं योग 15 से कभी नहीं अधिक है,
sapply(split(x, y), sum)
# 1 2 3 4 5 6 7 8 9 10
#13 13 9 10 15 12 12 13 14 8
नोट: मैं इसे विशाल डेटासेट (आमतौर पर> 150 - 200 जीबी) पर चला रहा हूं इसलिए दक्षता जरूरी है।
एक विधि है कि मैं कोशिश की और करीब आता है लेकिन विफल रहता है है,
as.integer(cut(cumsum(x), breaks = seq(0, max(cumsum(x)) + 15, 15)))
#[1] 1 1 1 2 2 3 3 4 4 4 5 5 5 6 6 6 7 8 8 8
क्या आपने [यहां] (https://stackoverflow.com/questions/34531568/conditional-cumsum-with-reset) और आरसीपीपी कार्यान्वयन [यहां] (https://stackoverflow.com/questions/29054459) की जांच की है/कैसे-टू-स्पीड-अप-या-वेक्टरिज-ए-फॉर-लूप/2 9 055443 # 2 9 055443) – akrun
@akrun लिंक के लिए धन्यवाद। मैं उन्हें एक एएसएपी – Sotos
हां दूंगा, यह एक डुप्लिकेट है, @क्रुन, यहां आपके पास एक समाधान था जिसे सामान्यीकृत भी किया जा सकता है: https://stackoverflow.com/questions/44512075/resetting-cumsum-if-value-goes-to- नकारात्मक-इन-आर –