marco_massic
marco_massic

Reputation: 19

Create date with R

Hy guys,

I want to build in R a Date as: 02-06-year for 15 years. Here the code:

library(timeDate)
listHolidays
seq=0:5000

data.iniziale <- as.Date("2015-01-01")

calendario = data.iniziale + seq

l = length(calendario)

for (i in 1:l){
    x[i]=as.Date(year(calendario[i]),06,02)
}

It does not work as is. How can I do for that date

Upvotes: 0

Views: 318

Answers (3)

Albin
Albin

Reputation: 912

I suggest to use some of existing functions of R to facilitate your task.

With the seq function, you can generate simply a sequence of dates. And format is as shown below:

format(seq(as.Date("2015-01-01"), as.Date("2030-01-01"), "days"), "%m-%d-%Y")

Output (partly):

[1] "01-01-2015" "01-02-2015" "01-03-2015" "01-04-2015" "01-05-2015" "01-06-2015" "01-07-2015" "01-08-2015"
[9] "01-09-2015" "01-10-2015" "01-11-2015" "01-12-2015" "01-13-2015" "01-14-2015" "01-15-2015" "01-16-2015"

Upvotes: 2

PaulS
PaulS

Reputation: 25483

Another possible solution, using lubridate:

library(tidyverse)
library(lubridate)

str_c("2-6-", 2000:2014) %>% dmy

#>  [1] "2000-06-02" "2001-06-02" "2002-06-02" "2003-06-02" "2004-06-02"
#>  [6] "2005-06-02" "2006-06-02" "2007-06-02" "2008-06-02" "2009-06-02"
#> [11] "2010-06-02" "2011-06-02" "2012-06-02" "2013-06-02" "2014-06-02"

Upvotes: 1

Marco_CH
Marco_CH

Reputation: 3294

Similar to Albins solution, but I understood the question slightly different:

format(seq(as.Date("2015-01-01"), as.Date("2030-01-01"), "year"), "%Y-06-02")

Output:

 [1] "2015-06-02" "2016-06-02" "2017-06-02" "2018-06-02" "2019-06-02" "2020-06-02" "2021-06-02"
 [8] "2022-06-02" "2023-06-02" "2024-06-02" "2025-06-02" "2026-06-02" "2027-06-02" "2028-06-02"
[15] "2029-06-02" "2030-06-02"

Upvotes: 2

Related Questions