दरअसल, जैसा कि ऊपर उल्लेख किया गया है (और एसओ पर कहीं और), स्ट्रिंग को तिथि में बदलने के लिए, आपको महीने की एक विशिष्ट तारीख की आवश्यकता है। से as.Date()
मैन्युअल पृष्ठ:
यदि तारीख स्ट्रिंग पूरी तरह से तारीख निर्दिष्ट नहीं करती है, तो लौटा हुआ उत्तर सिस्टम-विशिष्ट हो सकता है। सबसे आम व्यवहार यह मान लेना है कि एक लापता वर्ष, महीना या दिन वर्तमान है। यदि यह गलत तरीके से तारीख निर्दिष्ट करता है, तो विश्वसनीय कार्यान्वयन एक त्रुटि देगा और तारीख को एनए के रूप में सूचित किया जाता है। दुर्भाग्य से कुछ सामान्य कार्यान्वयन (जैसे glibc
) अविश्वसनीय हैं और इच्छित अर्थ पर अनुमान लगाते हैं।
एक सरल समाधान यह होगा कि "01"
प्रत्येक तिथि को तारीख पेस्ट करें और strptime()
इसे उस महीने के पहले दिन के रूप में इंगित करने के लिए उपयोग करें।
आर में प्रसंस्करण की तारीखों और समय पर थोड़ी अधिक पृष्ठभूमि की मांग करने वालों के लिए:
आर में, समय का उपयोग होता है POSIXct
और POSIXlt
कक्षा और दिनांक Date
कक्षा का उपयोग करते हैं ।
1 जनवरी, 1970 से तिथियों को दिनों की संख्या के रूप में संग्रहीत किया जाता है और 1 जनवरी, 1970 से सेकंड की संख्या के रूप में संग्रहीत किया जाता है।
इसलिए, उदाहरण के लिए:
d <- as.Date("1971-01-01")
unclass(d)
pct <- Sys.time()
unclass(pct)
plt <- as.POSIXlt(pct)
up <- unclass(plt)
names(up)
up$hour
दिनांक और समय पर संचालन करने के लिए:
plt - as.POSIXlt(d)
और तिथियों को संसाधित करने के लिए, आप strptime()
(इन उदाहरणों को मैनुअल पेज से उधार लेकर) उपयोग कर सकते हैं :
strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS")
dates <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")
strptime(dates, "%d%b%Y")