У меня есть дата, в которую я хотел бы добавить дни, чтобы найти какую-то будущую дату.
например, как я могу найти дату, которая составляет 45 дней после 1/1/2001?
У меня есть дата, в которую я хотел бы добавить дни, чтобы найти какую-то будущую дату.
например, как я могу найти дату, которая составляет 45 дней после 1/1/2001?
Использовать +
> as.Date("2001-01-01") + 45
[1] "2001-02-15"
Вы также можете использовать
library(lubridate)
dmy("1/1/2001") + days(45)
Просто используйте
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>
В дополнение к простому добавлению, показанному другими, вы также можете использовать seq.Date
или seq.POSIXt
для поиска других приращений или декрементов (версия POSIXt делает секунды, минуты, часы и т.д.):
> seq.Date( Sys.Date(), length=2, by='3 months' )[2]
[1] "2012-07-25"