R将日期添加到日期

scr*_*Owl 51 datetime r date

我有一个日期,我想添加几天,以便找到未来的日期.

例如,我如何找到1/1/2001之后45天的日期?

And*_*rie 84

使用+

> as.Date("2001-01-01") + 45
[1] "2001-02-15"
Run Code Online (Sandbox Code Playgroud)


joh*_*nes 29

你也可以用

library(lubridate)
dmy("1/1/2001") + days(45)
Run Code Online (Sandbox Code Playgroud)

  • 如果您经常处理日期,那么 lubridate 库就是您的朋友。@johannes 的回答显示了这有多直观。 (2认同)

Gre*_*now 11

除了其他人显示的简单添加之外,您还可以使用seq.Dateseq.POSIXt查找其他增量或减量(POSIXt版本执行秒,分,小时等):

> seq.Date( Sys.Date(), length=2, by='3 months' )[2]
[1] "2012-07-25"
Run Code Online (Sandbox Code Playgroud)

  • 供参考:减去一年:`seq.Date(Sys.Date(), length = 2, by = '-1 year')` (2认同)

Dir*_*tel 10

只是用

 as.Date("2001-01-01") + 45
Run Code Online (Sandbox Code Playgroud)

来自基础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> 
Run Code Online (Sandbox Code Playgroud)