2012-11-28 9 views
9

मैं इस दिनांक प्रारूप को कैसे पार्स कर सकता हूं? क्या मुझे इस कोलन को डॉट में बदलना चाहिए या शायद कोई बेहतर समाधान जानता है?सेकेंड और मिलीसेकंड के बीच डेट प्रारूप में कॉलन। आर में पार्स कैसे करें?

> x <- "2012.01.15 09:00:02:002" 
> strptime(x, "%Y.%m.%d %H:%M:%S:%OS") 
[1] "2012-01-15 09:00:02" 
> strptime(x, "%Y.%m.%d %H:%M:%OS") 
[1] "2012-01-15 09:00:02" 
> x <- "2012.01.15 09:00:02.002" 
> strptime(x, "%Y.%m.%d %H:%M:%OS") 
[1] "2012-01-15 09:00:02.001" 
+0

दोनों उत्तर दिए गए हैं सही +1:

यहाँ एक तरह से आप ऐसा कर सकता है! लेकिन व्यक्तिगत रूप से मैं gsubfn prefre: डी –

+1

क्या आप वास्तव में जानते हैं कि पिछले कोलन पिछले नंबर अंशकालिक सेकंड है? यह फ्रेम की तरह कुछ और हो सकता है। – John

उत्तर

8

यहां एक सूक्ष्म भेद है जो आपको फेंक सकता है। ?strptime के रूप में नोट:

'strptime'% ओएस 'के लिए आंशिक सेकंड सहित इनपुट सेकंड होगा।

बल देने के लिए है कि एक सा, %OS आंशिक सेकंड --- न सिर्फ आंशिक हिस्सा सेकंड के सहित सेकंड प्रतिनिधित्व करता है: यदि सेकंड मूल्य है 44.234, %OS या %OS3 का प्रतिनिधित्व करता है 44.234, नहीं .234

तो समाधान है कि अंतिम : के लिए एक . विकल्प वास्तव में है।

x <- "2012.01.15 09:00:02:002" 
strptime(gsub(":", ".", x), "%Y.%m.%d %H.%M.%OS") 
+0

+1। मुझे लगता है कि ओपी पहले से ही यह सब जानता था - आप ध्यान देंगे कि वह उस तथ्य का उपयोग आखिरी चीज़ों में करता है जिसने कोशिश की - लेकिन यह उन लोगों के लिए उपयोगी होने की संभावना है जो इस प्रश्न में आ रहे हैं। – ruakh

+0

@ruakh - अच्छा बिंदु, और मुझे संदेह है कि आप सही हैं। मुझे यह पसंद है कि 'strptime' से उद्धरण बिंदु को अधिक स्पष्ट बनाता है। –

+0

हां वास्तव में मैंने कोलन को डॉट्स में परिवर्तित कर दिया है। त्वरित उत्तर के लिए Thx :) –

2

strptime(gsub(":", ".", x), "%Y.%m.%d %H.%M.%OS3") 

धोखा होगा?

+0

'sub' केवल प्रत्येक उदाहरण के बजाय' '' के साथ ''' के पहले उदाहरण को प्रतिस्थापित करेगा। @ JoshO'Brien के उत्तर – Justin

+0

@ जस्टिन के अनुसार आपको इसके लिए 'gsub' की आवश्यकता होगी: मुझे लगता है कि जब तक आपने टिप्पणी की थी तब तक मैं वास्तव में पहले ही तय करूँगा, लेकिन धन्यवाद। :-) – ruakh

संबंधित मुद्दे