按月R的子集日期向量

时间:2018-01-12 20:58:46

标签: r date

可能是一项微不足道的任务,但我无法用base R来解决这个问题。 给出像

这样的日期向量
dates=seq(as.Date("1951-01-01"), as.Date("2013-12-31"), by="month")

我想每年仅选择April-Sept

idx <- dates
month <- function(x)as.numeric(format(x, '%m'))
index <- which(month(idx) %in% c(4,5,6,7,8,9))# April-Sept of each year

如何根据index获得所需的日期?

2 个答案:

答案 0 :(得分:1)

这是你正在寻找的吗?

dates[month(dates) %in% 4:9]

答案 1 :(得分:1)

既然你说过基础R:

dates=seq(as.Date("1951-01-01"), as.Date("2013-12-31"), by="month")

get_dates_with_months <- function(date_vector, months_vector) {
    new_dates <- list()
    for(i in 1:length(date_vector)) {
        month <- strsplit(as.character(date_vector[i]), '-')[[1]][2]
        if(month %in% months_vector) { new_dates[i] <- list(date_vector[[i]]) }
    }
    res <- Filter(Negate(is.null), new_dates)
    return(res)
}

<强>用法:

new_dates <- get_dates_with_months(dates, c('04','05','06','07','08','09'))