developer tip

윤활유가있는 날짜 순서

copycodes 2020. 12. 31. 22:15
반응형

윤활유가있는 날짜 순서


안녕하세요 윤활유로 일련의 날짜를 얻으려고합니다.

이것은 작동하지 않습니다

seq(ymd('2012-04-07'),ymd('2013-03-22'),by=week(1))

기본 명령

seq(as.Date('2012-04-7'),as.Date('2013-03-22'),'weeks')

하지만 윤활유로이 작업을 수행하는 우아한 방법이 있는지 알고 싶습니다.

편집하다

무시하십시오 : 자신이 해결되었으므로 후손에게만 남겨 둡니다. 필요한 경우 삭제 해 주셔서 감사합니다.

seq(ymd('2012-04-07'),ymd('2013-03-22'),by='weeks')

트릭을


ymd날짜 문자열을 구문 분석하는 래퍼이며 POSIXct개체를 반환 합니다.

주를 정의하려면 ?seq.POSIXt(아님 lubridate)에 설명 된 표준 용어를 사용하기 만하면됩니다.

seq(ymd('2012-04-07'),ymd('2013-03-22'), by = '1 week')
seq(ymd('2012-04-07'),ymd('2013-03-22'), by = 'weeks')

작동합니다

의지대로

seq(ymd('2012-04-07'),ymd('2013-03-22'), by = '2 week')

lubridate Period클래스 객체를으로 강제 할 수는 difftime있지만 불필요하게 보입니다.

seq(ymd('2012-04-07'),ymd('2013-03-22'), by = as.difftime(weeks(1)))

이것은 날짜 형식을 기본 R로 변경하지 않고 POSIXct우주에 머무르는 방법 입니다. 버그 (예 : 시간대 변경 또는 타임 스탬프 손실)가 발생하는 일반적인 장소이므로 스크립트에서 날짜 형식을 변경하지 않습니다. 사용하는 방법은 다음과 같습니다 . R : 날짜에 1 개월 추가lubridatePOSIXt%m+%

# example date is a leap day for a "worst case scenario"
library("lubridate")
posixct.in <- parse_date_time(x = "2016-02-29", orders = "ymd")
# [1] "2016-02-29 UTC"

posixct.seq <- posixct.in %m+% years(x = seq.int(from = 0, to = 3, by = 1))
# [1] "2016-02-29 UTC" "2017-02-28 UTC" "2018-02-28 UTC" "2019-02-28 UTC"

posixct.seq <- posixct.in %m+% months(x = seq.int(from = 0, to = 3, by = 1))
# [1] "2016-02-29 UTC" "2016-03-29 UTC" "2016-04-29 UTC" "2016-05-29 UTC"

posixct.seq <- posixct.in %m+% days(x = seq.int(from = 0, to = 3, by = 1))
# [1] "2016-02-29 UTC" "2016-03-01 UTC" "2016-03-02 UTC" "2016-03-03 UTC"

posixct.seq <- posixct.in %m+% weeks(x = seq.int(from = 0, to = 3, by = 1))
# [1] "2016-02-29 UTC" "2016-03-07 UTC" "2016-03-14 UTC" "2016-03-21 UTC"

일반 +도 가끔 작동하지만 다음 %m+%과 같은 오류를 방지합니다.

posixct.seq <- posixct.in + years(x = seq.int(from = 0, to = 3, by = 1))
# [1] "2016-02-29 UTC" NA               NA               NA

처음에는 %m+달을 더하는 방법 일 뿐이라고 생각했기 때문에 처음에는 혼란 스러웠고 , 등등 lubridate과 같은 유사한 명령 %y+%이 존재하지 않았습니다. 그러나 "m"은 "월 추가"를 의미하지 않습니다. 내 추측은 "마법"=)

참조 URL : https://stackoverflow.com/questions/16932132/r-sequence-of-dates-with-lubridate

반응형