आर

2012-01-16 6 views
5

के साथ संख्यात्मक प्रारूप में कनवर्ट करना अधिकांश मामलों में, हम संख्यात्मक समय को आर का उपयोग करके पॉजिक्स प्रारूप में परिवर्तित करते हैं। हालांकि, कभी-कभी, हम तुलना करना चाहते हैं कि कौन सा समय बिंदु पहले है, तो हम संख्यात्मक समय प्रारूप पसंद करेंगे। इस प्रकार, समय प्रारूप को संख्यात्मक रूपांतरित करने के लिए यह काफी व्यावहारिक प्रश्न है। उदाहरण के लिए, मैं की तरह "2001/03/13 10:31:00" डेटा स्वरूप,आर

begin <- "2001-03-13 10:31:00" 

आर का उपयोग करना, मैं यह पता लगाने की कैसे एक अंकीय, उदा में यह गुप्त करना चाहते हैं जूलियन समय, 1 9 70-01-01 00:00:00 और 2001-03-13 10:31:00 के बीच गुजरने वाले सेकंड की तरह कुछ।

क्या आपके पास कोई सुझाव है?


जूलियन कैलेंडर 45 ई.पू. (709 एयूसी) जूलियस सीजर द्वारा रोमन कैलेंडर का एक सुधार के रूप में में शुरू हुआ। इसे अलेक्जेंड्रिया के खगोलविद सोसिजीन के परामर्श के बाद चुना गया था और शायद उष्णकटिबंधीय वर्ष (जिसे हिप्पर्चस के बाद से जाना जाता है) का अनुमान लगाने के लिए बनाया गया था। देख http://en.wikipedia.org/wiki/Julian_calendar

+0

मैं downvote नहीं था लेकिन मुझे लगता है कि यह आपके इनपुट और आउटपुट के बीच लापरवाह बेमेल की वजह से किया गया था। ऐसा लगता है कि आप एक चरित्र प्रकार वेक्टर में विराम चिह्न को हटाने की उम्मीद करते हैं और आप चाहते थे: 20010313103100 संभवतः एक संख्यात्मक मूल्य के रूप में, लेकिन moemnt पर यह बहुत अस्पष्ट है। –

+0

आपका उत्तर सहायक है। मैं सवाल संशोधित करूंगा। –

+4

आम तौर पर, 'as.numeric' बारी करने के लिए एक अच्छी पहली जगह है यदि आप कुछ को कन्वर्ट करना चाहते हैं, ठीक है, एक संख्या। क्या आपने कोशिश की है? – joran

उत्तर

6

आप निकालना चाहते हैं सिर्फ अगर ":", "", और "-" एक चरित्र वेक्टर से तो यह पर्याप्त होगा:

end <- gsub("[: -]", "" , begin, perl=TRUE) 
#> end 
#[1] "20010313103100" 

आप खंड के बारे में 1/4 पढ़ना चाहिए रास्ते में नीचे? regex चरित्र वर्ग के बारे में। चूंकि एक संदर्भ ऑपरेटर के रूप में उस संदर्भ में विशेष है, इसे पहले या आखिरी रखा जाना चाहिए।

अपने संपादित करने के बाद तो इस सवाल का जवाब स्पष्ट रूप से है @joran क्या लिखा है, सिवाय इसके कि आप दिनांक समय कक्षा में बदलने के लिए पहले की आवश्यकता होगी:

as.numeric(as.POSIXct(begin)) 
#[1] 984497460 

अन्य बिंदु बनाने के लिए है कि तुलना ऑपरेटरों काम करते हैं दिनांक और दिनांक समय वर्गीकृत चर के लिए, इसलिए रूपांतरण आवश्यक नहीं हो सकता है। यह तुलना एक सेकंड बाद में एक समय के लिए 'प्रारंभ' और सही ढंग से रिपोर्ट है कि शुरू है पहले:

as.POSIXct(begin) < as.POSIXct(begin) +1 
#[1] TRUE 
+0

या अधिक आम तौर पर 'gsub ("[^ [: digit:]]", "" शुरू होता है)' संख्या के अलावा कुछ भी हटा देगा। – kohske

3

संशोधित सवाल करना चाहिए कि आप क्या चाहते के आधार पर:

begin <- "2001-03-13 10:31:00" 
as.numeric(as.POSIXct(begin)) 

परिणाम एक यूनिक्स है टाइमस्टैम्प, युग के बाद से सेकंड की संख्या, यह मानते हुए कि टाइमस्टैम्प स्थानीय समय क्षेत्र में है।

0

?as.POSIX मदद से उदाहरण आप के लिए देता है

as.POSIXct(strptime(begin, "%Y-%m-%d %H:%M:%S")) 

तो यह होगा

as.numeric(as.POSIXct(strptime(begin, "%Y-%m-%d %H:%M:%S")))