2012-04-25 193 views

回答

53

使用+

> as.Date("2001-01-01") + 45 
[1] "2001-02-15" 
9

剛剛在許多貢獻包中的一個使用

as.Date("2001-01-01") + 45 

從基礎R,或日期的功能。我的RcppBDT軟件包從Boost Date_Time中包含功能,包括某個月的「第三個星期三的日期」。

編輯:由@Andrie慫恿,這裏有更多來自RcppBDT(這實際上主要是Rcpp模塊的測試案例)。

R> library(RcppBDT) 
Loading required package: Rcpp 
R> 
R> str(bdt) 
Reference class 'Rcpp_date' [package ".GlobalEnv"] with 0 fields 
and 42 methods, of which 31 are possibly relevant: 
    addDays, finalize, fromDate, getDate, getDay, getDayOfWeek, getDayOfYear, 
    getEndOfBizWeek, getEndOfMonth, getFirstDayOfWeekAfter, 
    getFirstDayOfWeekInMonth, getFirstOfNextMonth, getIMMDate, getJulian, 
    getLastDayOfWeekBefore, getLastDayOfWeekInMonth, getLocalClock, getModJulian, 
    getMonth, getNthDayOfWeek, getUTC, getWeekNumber, getYear, initialize, 
    setEndOfBizWeek, setEndOfMonth, setFirstOfNextMonth, setFromLocalClock, 
    setFromUTC, setIMMDate, subtractDays 
R> bdt$fromDate(as.Date("2001-01-01")) 
R> bdt$addDays(45) 
R> print(bdt) 
[1] "2001-02-15" 
R> 
19

你也可以使用

library(lubridate) 
dmy("1/1/2001") + days(45) 
9

除了由他人所示的簡單此外,您還可以使用seq.Dateseq.POSIXt找到其他增量或減量(該POSIXt版本確實秒,分,小時等):

> seq.Date(Sys.Date(), length=2, by='3 months')[2] 
[1] "2012-07-25" 
+1

僅供參考:減一年:'seq.Date(Sys.Date(),length = 2,by ='-1 year')' – 2017-08-09 13:58:32