Search code examples
rdata-cleaning

R: How do I generate a sequence of dates to populate all rows within a column?


I want to generate the following sequence on Lubridate

seq(ymd('2017-03-12'),ymd('2020-02-23'), by = '1 week')

and store the weeks generated as a column in an existing data.frame of 102 rows.

When I try to use dataframe["newcolumnname] <- seq(ymd('2017-03-12'),ymd('2020-02-23'), by = '1 week')

It throws an error: Error in [<-.data.frame(* tmp *, "Year", value = c(17237, 17244, 17251, : replacement has 155 rows, data has 102

What's the most efficient way to generate a sequence of dates in a column in R?


Solution

  • dates <- seq(from=as.Date("2017-03-12"), to=as.Date("2020-02-23"), by = "weeks") works fine. I think your problem is the length of the dataframe you're trying to fit the data in (as stated in the error).

    EDIT: knowing that the goal is to have the dataframe fit the new column size, here's my suggestion: Using the method cbind.fill() from the package rowr

    cbind.fill(a,b, fill = NA)
    

    Will fill the shortest of the two elements with NA's

    BTW, I would definitely recommand checking out the xts package to play around with timeseries in R.