2016-10-04 21 views
5

मैं इस प्रारूप में तारीखों के पास बड़ी संख्या में:मैं आर में अंशकालिक समय कैसे जोड़ सकता हूं?

dt = as.POSIXct("2004-04-02 12:45:00 UTC") 

और मैं जोड़ने/संख्या कि हमेशा पूरे numbers.I lubridate पुस्तकालय का उपयोग कर रहा नहीं हो सकता घटाना है।

उदाहरण:

dt - days(2) 
[1] "2004-03-31 12:45:00 UTC" 

लेकिन,

dt - days(1.5) 
Error in validObject(.Object) : 
    invalid class “Period” object: periods must have integer values 

इस कार्य के लिए एक वैकल्पिक है?

+0

अच्छा सवाल। अगर केवल आर के पास अन्य तारीख/समय के कार्यों को लुब्र्रिडेट के अलावा किया गया था। –

उत्तर

7

त्रुटि days(1.5) के साथ होती है, जो आंशिक अवधि की अनुमति नहीं देती है। आप कर सकता है:

dt - days(1) - hours(12) 

या

dt - 1.5*24*3600 

या वहाँ एक आधार तिथि समारोह है कि पता @DirkEddelbuettel की तरह लोगों को इस बारे में भी काम करेगा है शायद। आह, यह difftime है (मैं अपने सिर के शीर्ष से इन चीज़ों को याद रखने के लिए पर्याप्त तिथियों के साथ काम नहीं करता)।

dt - as.difftime(1.5, units="days") 

और, जैसा कि @maximusdooku द्वारा ने कहा:

dt - ddays(1.5) 

(कोड के आधार पर, ऐसा लगता है कि ddays सिर्फ अनुरोध किया समय अवधि में सेकंड की संख्या, प्लस कुछ कक्षा की जानकारी देता है।)

+0

बहुत अच्छी तरह से किया :) –

+0

धन्यवाद। मैंने ddays और dminutes भी खोजा। डीटी - डीडीएएस (1.5) – maximusdooku

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