2014-05-12 2 views

답변

20

lubridate 아래 날짜 배를 반올림 floor_date라는 기능이 있습니다.

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

내가 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

문자열 형식 해킹을 사용하지 않는 경우 +1 (나와 같은). – nacnudus

+0

그냥 이것에 대해 좋은 길을 찾아 왔습니다. 정말 쉽고, 윤활유와도 복잡해졌습니다. –

1

내가 다른 해결책이 있습니다 : unit = "month"로를 호출하면 당신이 원하는 것을 정확히 수행

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

을하지만 라이브러리 'lubridate'또는 'date.table'(data.table와 통합)가 필요

관련 문제