2017-10-23 7 views
0

는 lubridate 간격을 감안할 lubridate 구간에 속하는 달의 압축을 풉니 다예를 들어,

start <- "2016-09-24" 
finish <- "2016-11-02" 
my_interval <- lubridate::interval(start, finish) 
my_interval 

> my_interval 
[1] 2016-09-24 UTC--2016-11-02 UTC 
나는이 경우,이 구간에 속하는 개월을 추출 할 수 있도록하고 싶습니다

:

[1] "Sep" "Oct" "Nov" 

지금까지,이에 최선 시도는 정말 어설픈입니다 : 많은 년간

my_months <- list(
    "Aug" = interval("2016-08-01", "2016-08-31"), 
    "Sep" = interval("2016-09-01", "2016-09-30"), 
    "Oct" = interval("2016-10-01", "2016-10-31"), 
    "Nov" = interval("2016-11-01", "2016-11-30"), 
    "Dec" = interval("2016-12-01", "2016-12-31") 
) 

extract_months <- function(x, months) { 
    out <- vector(mode = "character") 

    for (i in seq_along(months)) { 
    in_month <- int_overlaps(x, months[[i]]) 
    if (in_month) { 
     out[i] <- names(months)[i] 
    } 
    out <- out[!is.na(out)] 
    } 
    out 
} 

extract_months(x = my_interval, months = my_months) 

> extract_months(x = my_interval, months = my_months) 
[1] "Sep" "Oct" "Nov" 

이 빠르게 unwie된다 리. 나는 누군가가 더 나은 해결책을 원하기를 바라고있다.

나는이 질문에 그것은 사실입니다 매우 간단 Subset a dataframe between 2 dates

+1

[2 개 날짜 사이의 데이터 프레임 하위 집합] 가능한 복제본 (https://stackoverflow.com/questions/23622338/subset-a-dataframe-between-2-dates) – Masoud

답변

3

의 중복의 중복이 얼마나보고 실패!

library(lubridate) 
month.abb[month(start):month(finish)] 

이 방법이 작동하지 않는 경우 알려주십시오.

+0

간단합니다! 내가 그걸 놓쳤다는 것을 믿을 수 없어. 고마워, 킴. –

+0

문제 없습니다. 나는 새로운 것을 오늘 배웠다. :) – Kim