दिलचस्प पोस्ट
और ? ओरेकल प्रक्रिया के लिए सरणी को पास करें Django / Python शुरुआती: अजगर manage.py syncdb निष्पादित करते समय त्रुटि – psycopg2 नहीं मिला HTML5 इनपुट प्रकार की तिथि – आज के लिए डिफ़ॉल्ट मूल्य? कैसे एक अक्षर स्ट्रिंग में बदलने के लिए? मैं सी का उपयोग कर यूनिक्स पर एक फ़ाइल की प्रतिलिपि कैसे कर सकता हूं? रेट्रोफ़िट में डायनामिक जेसन को कैसे नियंत्रित किया जाए? Log4j.properties का स्थान बदलें Symfony2 – एसेटिक – सीएसएस में लोड चित्र * ngFor का उपयोग करके वस्तु की कुंजी और मूल्य का उपयोग प्रत्येक पंक्ति के लिए विभिन्न लेआउट के साथ एंड्रॉइड सूची दृश्य सी #: एचटीएमएफ़िलिटीपैक इनर टेक्स्ट को निकालता है प्रोटोटाइप के साथ एक घटना ट्रिगर करें FileDialog काम नहीं करता है क्या नई परियोजनाओं को log4j के बजाय लॉगबैक का उपयोग करना चाहिए?

कुशलता से दो तिथियों के बीच समय और तिथियों का यादृच्छिक नमूना उत्पन्न करता है

मैंने दो निर्दिष्ट दिनों के बीच एक तिथि / समय यादृच्छिक रूप से चुनने के लिए एक (काफी सरल) फ़ंक्शन लिखा है

# set start and end dates to sample between day.start <- "2012/01/01" day.end <- "2012/12/31" # define a random date/time selection function rand.day.time <- function(day.start,day.end,size) { dayseq <- seq.Date(as.Date(day.start),as.Date(day.end),by="day") dayselect <- sample(dayseq,size,replace=TRUE) hourselect <- sample(1:24,size,replace=TRUE) minselect <- sample(0:59,size,replace=TRUE) as.POSIXlt(paste(dayselect, hourselect,":",minselect,sep="") ) } 

जिसके परिणामस्वरूप:

 > rand.day.time(day.start,day.end,size=3) [1] "2012-02-07 21:42:00" "2012-09-02 07:27:00" "2012-06-15 01:13:00" 

लेकिन ऐसा लगता है कि नमूना आकार की रैंप अप के रूप में काफी धीमा हो रही है

 # some benchmarking > system.time(rand.day.time(day.start,day.end,size=100000)) user system elapsed 4.68 0.03 4.70 > system.time(rand.day.time(day.start,day.end,size=200000)) user system elapsed 9.42 0.06 9.49 

क्या किसी को यह सुझाव देने में सक्षम है कि इसे और अधिक कुशल तरीके से कैसे करना है?

वेब के समाधान से एकत्रित समाधान "कुशलता से दो तिथियों के बीच समय और तिथियों का यादृच्छिक नमूना उत्पन्न करता है"

आह, एक अन्य तारीख / समय समस्या हम फ्लोट्स में काम करने के लिए कम कर सकते हैं 🙂

इस फ़ंक्शन को आज़माएं

 R> latemail <- function(N, st="2012/01/01", et="2012/12/31") { + st <- as.POSIXct(as.Date(st)) + et <- as.POSIXct(as.Date(et)) + dt <- as.numeric(difftime(et,st,unit="sec")) + ev <- sort(runif(N, 0, dt)) + rt <- st + ev + } R> 

हम सेकंड में difftime गणना करते हैं, और फिर "केवल" परिणाम पर छांटने के लिए, इसके ऊपर वर्दी difftime । इसे प्रारंभ करने के लिए जोड़ें और आप कर रहे हैं:

 R> set.seed(42); print(latemail(5)) ## round to date, or hour, or ... [1] "2012-04-14 05:34:56.369022 CDT" "2012-08-22 00:41:26.683809 CDT" [3] "2012-10-29 21:43:16.335659 CDT" "2012-11-29 15:42:03.387701 CST" [5] "2012-12-07 18:46:50.233761 CST" R> system.time(latemail(100000)) user system elapsed 0.024 0.000 0.021 R> system.time(latemail(200000)) user system elapsed 0.044 0.000 0.045 R> system.time(latemail(10000000)) ## a few more than in your example :) user system elapsed 3.240 0.172 3.428 R> 

ऐसा कुछ भी काम करेगा यादृच्छिक डेटा फ्रेम के लिए क्षमा करें, मैंने इसे फेंक दिया जिससे आप एक भूखंड देख सकें।

 data=as.data.frame(list(ID=1:10, variable=rnorm(10,50,10))) #This function will generate a uniform sample of dates from #within a designated start and end date: rand.date=function(start.day,end.day,data){ size=dim(data)[1] days=seq.Date(as.Date(start.day),as.Date(end.day),by="day") pick.day=runif(size,1,length(days)) date=days[pick.day] } #This will create a new column within your data frame called date: data$date=rand.date("2014-01-01","2014-02-28",data) #and this will order your data frame by date: data=data[order(data$date),] #Finally, you can see how the data looks plot(data$date,data$variable,type="b")