Biorąc pod uwagę czasy POSIXct, jak wyodrębnić pierwszy dzień miesiąca dla agregacji?Pierwszy dzień miesiąca od daty daty POSIXct za pomocą lubridate
library(lubridate)
full.date <- ymd_hms("2013-01-01 00:00:21")
Biorąc pod uwagę czasy POSIXct, jak wyodrębnić pierwszy dzień miesiąca dla agregacji?Pierwszy dzień miesiąca od daty daty POSIXct za pomocą lubridate
library(lubridate)
full.date <- ymd_hms("2013-01-01 00:00:21")
lubridate posiada funkcję o nazwie floor_date
który jest zaokrąglany w dół Date-razy. Nazywając go unit = "month"
robi dokładnie to, co chcesz:
library(lubridate)
full.date <- ymd_hms("2013-01-01 00:00:21")
floor_date(full.date, "month")
[1] "2013-01-01 UTC"
first.of.month <- ymd(format(full.date, "%Y-%m-01"))
first.of.month
[1] "2013-01-01 UTC"
nie widzę powodu, aby korzystać 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"
+1 za niestosowanie hackowania (jak ja). – nacnudus
Właśnie natknąłem się na to, dobry sposób, aby o tym porozmawiać. Sprawia, że to naprawdę proste, zbyt skomplikowało to również przy pomocy lubridate. –
mam inne rozwiązanie:
first.of.month <- full.date - mday(full.date) + 1
ale potrzebuje biblioteki 'lubridate' lub 'date.table' (agregacji z data.table)
Znam jeden sposób, aby to zrobić, mam nadzieję, że istnieją mądrzejsze sposoby. – nacnudus