मैं उदाहरण के आर में एक तिथि, .:वर्षों को घटाना कैसे करें?
dt = as.Date('2010/03/17')
मैं इस दिनांक से 2 वर्षों घटाना, लीप वर्ष और इस तरह के मुद्दों के बारे में चिंता हो रही as.Date('2010-03-17')
बिना करना चाहते हैं।
मैं यह कैसे करूँगा?
मैं उदाहरण के आर में एक तिथि, .:वर्षों को घटाना कैसे करें?
dt = as.Date('2010/03/17')
मैं इस दिनांक से 2 वर्षों घटाना, लीप वर्ष और इस तरह के मुद्दों के बारे में चिंता हो रही as.Date('2010-03-17')
बिना करना चाहते हैं।
मैं यह कैसे करूँगा?
सबसे आसान बात यह है कि इसे POSIXlt में परिवर्तित करना और सालों से 2 घटाएं।
> d <- as.POSIXlt(as.Date('2010/03/17'))
> d$year <- d$year-2
> as.Date(d)
[1] "2008-03-17"
इस संबंधित प्रश्न को देखें: How to subtract days in R?।
आप seq
इस्तेमाल कर सकते हैं:
R> dt = as.Date('2010/03/17')
R> seq(dt, length=2, by="-2 years")[2]
[1] "2008-03-17"
तारीखों की सूची में इसे लागू करने का कोई तरीका नहीं है, हालांकि, जब तक कि मुझे एक साधारण एक्सटेंशन नहीं मिल रहा है – MichaelChirico
lubridate
library(lubridate)
ymd("2010/03/17") - years(2)
कोई कहां से लुब्र्रिडेट प्राप्त करता है? – Farrel
सीआरएएन से, जैसे ही सीआरएएन रखरखाव अपनी छुट्टी से वापस आ जाता है। – hadley
क्या आपने लुब्र्रिडेट लिखा था? मुझे आर के सबसे परेशान पहलुओं में से एक को संभालने की तिथि मिली है, तो मुझे छुट्टी से वापस आने के इंतजार किए बिना लुब्र्रिडेट कहां मिल सकता है? – Farrel
एक ही जवाब के साथ (MichaelChirico को जवाब देने के लिए, मैं यह कर सकते हैं टिप्पणी नहीं है मेरे पास पर्याप्त प्रतिनिधि नहीं है):
R> unlist(lapply(c("2015-12-01", "2016-12-01"),
function(x) { return(as.character(seq(as.Date(x), length=2, by="-1 years")[2])) }))
[1] "2014-12-01" "2015-12-01"
यदि लीप दिन रों ध्यान में रखा जाना करने के लिए कर रहे हैं तो मैं, महीने घटाना इस lubridate समारोह उपयोग करने की अनुशंसा के रूप में अन्य तरीकों 1 या एनए मार्च वापस आ जाएगी चाहते हैं:
> library(lubridate)
> dt %m-% months(12*2)
[1] "2008-03-17"
# Try with leap day
> leapdt <- as.Date('2016/02/29')
> leapdt %m-% months(12*2)
[1] "2014-02-28"
चाहे आप फरवरी 28 या मार्च 1 प्राप्त करें, सम्मेलन का विषय है। 'एनए 'स्पष्ट रूप से अस्वीकार्य है, मैं सहमत हूं। जानकारी जोड़ने के लिए धन्यवाद। – gt6989b
आरसीएस के नीचे का जवाब बेहतर है - हम क्या ज़रूरत है 'difftime' इसके लिए ऑपरेटर। –
अलग-अलग के साथ, मुझे नहीं लगता कि आप साल, बस दिन या सप्ताह कर सकते हैं। – gt6989b
फरवरी -2 9 के मामले में सावधान रहें, क्योंकि परिणामस्वरूप ऑब्जेक्ट में शायद wday/mon/mday स्लॉट सही नहीं होंगे! आज़माएं: 'd = as.POSIXlt ('2016-02-29', tz = 'GMT'); डी $ वर्ष = डी $ वर्ष - 1' और' d $ wday, d $ mon, d $ के मानों की जांच करें mday' – digEmAll