2014-05-12 15 views

cevap

20

lubridate aşağı tarih-saatleri yuvarlar floor_date adında bir işlevi vardır.

library(lubridate) 
full.date <- ymd_hms("2013-01-01 00:00:21") 
floor_date(full.date, "month") 

[1] "2013-01-01 UTC" 
1
first.of.month <- ymd(format(full.date, "%Y-%m-01")) 
first.of.month 

[1] "2013-01-01 UTC" 
10

Ben lubridate kullanmak için bir neden görmüyorum:

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

+1 bir dize biçimlendirme kesmek kullanmıyor (benim gibi). – nacnudus

+0

Sadece buna rastladım, bunun için iyi bir yol. Bunu gerçekten kolaylaştırıyor, aynı zamanda kırılganlıkla da karmaşıklaştırıyordu. –

1

i başka bir çözüm var: unit = "month" ile çağrılması ne istediğinizi tam olarak yapar

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

ama kütüphaneyi 'lubridate' veya 'date.table' (data.table ile toplama) ihtiyacı

İlgili konular