के साथ सप्ताहांत की गणना में कुशल सप्ताह बनाएं मेरे कामकाजी डेटासेट में, मैं थोक और राजस्व में बदलाव के लिए सप्ताह-दर-सप्ताह मूल्यों की गणना करने की कोशिश कर रहा हूं। कोड काम करता प्रतीत होता है, लेकिन मेरे अनुमानों से पता चलता है कि यह एक साधारण सरल गणना चलाने के लिए लगभग 75 घंटे लग जाएगा। नीचे सामान्य प्रतिलिपि प्रस्तुत करने योग्य संस्करण है जो इस छोटे डाटासेट पर चलने के लिए के बारे में 2 एम लेता है:सबसेटिंग
########################################################################################################################
# MAKE A GENERIC REPORDUCIBLE STACK OVERFLOW QUESTION
########################################################################################################################
# Create empty data frame of 26,000 observations similar to my data, but populated with noise
exampleData <- data.frame(product = rep(LETTERS,1000),
wholesale = rnorm(1000*26),
revenue = rnorm(1000*26))
# create a week_ending column which increases by one week with every set of 26 "products"
for(i in 1:nrow(exampleData)){
exampleData$week_ending[i] <- as.Date("2016-09-04")+7*floor((i-1)/26)
}
exampleData$week_ending <- as.Date(exampleData$week_ending, origin = "1970-01-01")
# create empty columns to fill
exampleData$wholesale_wow <- NA
exampleData$revenue_wow <- NA
# loop through the wholesale and revenue numbers and append the week-over-week changes
for(i in 1:nrow(exampleData)){
# set a condition where the loop only appends the week-over-week values if it's not the first week
if(exampleData$week_ending[i]!="2016-09-04"){
# set temporary values for the current and past week's wholesale value
currentWholesale <- exampleData$wholesale[i]
lastWeekWholesale <- exampleData$wholesale[which(exampleData$product==exampleData$product[i] &
exampleData$week_ending==exampleData$week_ending[i]-7)]
exampleData$wholesale_wow[i] <- currentWholesale/lastWeekWholesale -1
# set temporary values for the current and past week's revenue
currentRevenue <- exampleData$revenue[i]
lastWeekRevenue <- exampleData$revenue[which(exampleData$product==exampleData$product[i] &
exampleData$week_ending==exampleData$week_ending[i]-7)]
exampleData$revenue_wow[i] <- currentRevenue/lastWeekRevenue -1
}
}
समझने क्यों यह इतने लंबे समय या कैसे समय में कटौती करने लग जाते हैं किसी भी मदद की बहुत सराहना की जाएगी!
शायद मुख्य मुद्दा नहीं है ... लेकिन लूप में तिथियों को तारों का विश्लेषण न करें; बस 'd0 = as.Date ("2016-09-04") को कहीं और सहेजें और इसका उपयोग करें। यह भी एक स्ट्रिंग बनाम '! =' नहीं है जिसे आज तक पार्स किया जाना चाहिए। मुझे संदेह है कि कोड का मुख्य भाग एक लूप के बजाय मर्ज/जॉइन के रूप में लिखा जा सकता है। – Frank
यह अच्छा और पुनरुत्पादित दिखता है, लेकिन (कम से कम भविष्य में) मैं सुझाव देता हूं कि ** न्यूनतम ** उदाहरण भी बनाएं। 26 उत्पादों और 140 हफ्तों की तुलना में, 2 उत्पादों और 4 सप्ताह के साथ क्या हो रहा है, यह देखने के लिए प्रत्येक चरण में डेटा का निरीक्षण करना अधिक आसान होगा। – Gregor
प्रतिक्रिया के लिए धन्यवाद! मैं oversimplify नहीं करना चाहता था, लेकिन आप सही हैं कि यह अधिक सरल हो सकता था। मैं अगली बार इसे ध्यान में रखूंगा। –