First day of the month from a POSIXct date time using lubridate

前端 未结 4 627
孤城傲影
孤城傲影 2020-12-10 01:19

Given a POSIXct date time, how do you extract the first day of the month for aggregation?

library(lubridate)

full.date <- ymd_hms(\"2013-01-01 00:00:21\"         


        
相关标签:
4条回答
  • 2020-12-10 01:25

    lubridate has a function called floor_date which rounds date-times down. Calling it with unit = "month" does exactly what you want:

    library(lubridate)
    full.date <- ymd_hms("2013-01-01 00:00:21")
    floor_date(full.date, "month")
    
    [1] "2013-01-01 UTC"
    
    0 讨论(0)
  • 2020-12-10 01:45

    i have another solution :

    first.of.month <- full.date - mday(full.date) + 1
    

    but it needs the library 'lubridate' or 'date.table'(aggregation with data.table)

    0 讨论(0)
  • 2020-12-10 01:50

    I don't see a reason to use lubridate:

    full.date <- as.POSIXct("2013-01-11 00:00:21", tz="GMT")
    
    monthStart <- function(x) {
      x <- as.POSIXlt(x)
      x$mday <- 1
      as.Date(x)
    }
    
    monthStart(full.date)
    #[1] "2013-01-01"
    
    0 讨论(0)
  • 2020-12-10 01:51
    first.of.month <- ymd(format(full.date, "%Y-%m-01"))
    first.of.month
    
    [1] "2013-01-01 UTC"
    
    0 讨论(0)
提交回复
热议问题