首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找月份的时间范围,滚动到一年

查找月份的时间范围,滚动到一年
EN

Stack Overflow用户
提问于 2018-07-25 06:25:23
回答 1查看 52关注 0票数 1

我想确定一个向量(时间范围)中包含所有月份的最短连续月份数。

当月份都在一年中时,这可以很容易地完成:

代码语言:javascript
复制
mos_summer <- c(6, 5, 6, 7, 9)
# desired answer: 5 months (May-September) encompass all values in mos_summer

max(mos_summer) - min(mos_summer) + 1  # produces 5 (correct!)

然而,当几个月在年初/年底时,这种方法就会失效。

代码语言:javascript
复制
mos_winter <- c(12, 11, 1, 1, 12)
# desired answer: 3 months (November-January) encompass all values in mos_winter

max(mos_winter) - min(mos_winter) + 1  # produces 12 (wrong!)

This previous question演示了一个使用mod的php解决方案;然而,这似乎在R中不起作用:

代码语言:javascript
复制
(12 + max(mos_winter) - min(mos_winter) + 1) %% 12  # produces 0

有没有人知道计算时间范围的好方法,处理一年的开始/结束?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 06:56:35

这个怎么样?

代码语言:javascript
复制
mos_summer <- c(6, 5, 6, 7, 9)
mos_winter <- c(12, 11, 1, 1, 12)

min.month.range <- function(x) {
    x1 <- x
    x2 <- ifelse(x <= 6, x + 12, x)
    min(diff(range(x1)) + 1, diff(range(x2)) + 1)
}

min.month.range(mos_summer)
#[1] 5

min.month.range(mos_winter)
#[1] 3

min.month.range(c(1, 3, 11))
#[1] 5

min.month.range(c(1, 11, 12))
#[1] 3

min.month.range(c(1, 7))
#[1] 7
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51508374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档