चूंकि प्रश्न में कहा गया है कि सप्ताह 00-53 से चला जाता है, हम मानते हैं कि सप्ताह की संख्या प्रश्न में तारीख से पहले या उससे पहले गुरुवार की संख्या है। इस प्रकार, वर्ष में पहला गुरुवार सप्ताह 1 से शुरू होता है और सप्ताह 0 को उससे पहले किसी भी दिन सौंपा जाता है।
(टिप्पणियां थीं कि अगर वर्ष का पहला दिन मंगलवार था तो वह सप्ताह 1 होगा लेकिन अगर ऐसा होता तो ऐसा कोई सप्ताह नहीं हो सकता था जैसा कि विषय में आवश्यक होना चाहिए, इसलिए ठीक से कुछ स्पष्टीकरण सप्ताह संख्या की परिभाषा की क्या आवश्यकता हो सकती है। यहां हम पिछले अनुच्छेद में परिभाषा का उपयोग करने जा रहे हैं, लेकिन अगर हमें पता था कि परिभाषा क्या थी, तो इसे बदलना मुश्किल नहीं होगा। उदाहरण के लिए, अगर हम हमेशा पहले सप्ताह चाहते थे वर्ष में 1 होने के बावजूद यह एक छोटा सा सप्ताह था, फिर भी हम !is.thu(jan1(d))
परिणाम में जोड़ सकते थे।)
नीचे दिए गए दोनों समाधान पर्याप्त हैं कि उन्हें एक बयान में व्यक्त किया जा सकता है; हालांकि, हमने स्पष्टता के लिए प्रत्येक को कई छोटे कार्यों में शामिल किया है। पहला विशेष रूप से सीधे आगे है लेकिन दूसरा sapply
की आवश्यकता के बिना स्वचालित रूप से वेक्टरकृत होता है और यह अधिक कुशल होगा।
1. योग गुरुवार साल में यह समाधान इनपुट d
मानता वर्ग "Date"
की है और बस से पहले या उस पर एक साल में गुरुवार की संख्या का योग:
is.thu <- function(x) weekdays(x) == "Thursday"
jan1 <- function(x) as.Date(cut(x, "year"))
week4 <- function(d) {
sapply(d, function(d) sum(is.thu(seq(jan1(d), d, by = "day"))))
}
हम इसे इस तरह का परीक्षण कर सकते :
d <- as.Date(c("2013-01-04", "2013-01-26", "2013-02-03", "2013-02-09",
"2013-02-20", "2013-03-03"))
week4(d) # 1 4 5 6 7 9
2. nextthu
zoo quickref vignette में फ़ंक्शन के आधार पर हम देखते हैं कि अगले गुरुवार के एपोक (1 980-01-01) के बाद से दिनों की संख्या (या दिन में पहले से ही गुरुवार को प्रश्न में दिन) को पहले में nextthu
दिया गया है नीचे पंक्ति।
nextthu <- function(d) 7 * ceiling(as.numeric(d)/7)
week4a <- function(d) (as.numeric(d) - nextthu(jan1(d))) %/% 7 + 1
और यहाँ एक परीक्षण
week4a(d) # 1 4 5 6 7 9
जोड़ा जाता है: दूसरा समाधान में निश्चित बग साल के पहले दिन को यह लागू करना हम परिणाम जहां d
के रूप में पहले है निकाले जाते हैं।
यदि आप पूछ सकते हैं तो आप ऐसा क्यों करना चाहेंगे? – Arun
तो अगर एक साल मंगलवार को शुरू हुआ, तो सप्ताह 1 मंगलवार/बुधवार और सप्ताह 2 गुरुवार को शुरू होता है ...? – joran
हां। सप्ताह तक बुध तक ट्यू से होना चाहिए। – Eco06