2017-10-23 13 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 

私はこのケースでは、この間隔に分類ヶ月を抽出できるようにしたいと思います:

長年にわたり

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次のようになります。

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

これまでのところ、この時私の最高の試みは本当に不格好ですldy。私は誰かがより良い解決策を持っていることを望んでいる。

私はこの質問が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

関連する問題