gpt4 book ai didi

r - 计算连续的月份序列

转载 作者:行者123 更新时间:2023-12-04 10:34:50 24 4
gpt4 key购买 nike

如果我有一个像这样编码的年和月的向量:

ym <- c(
201401,
201403:201412,
201501:201502,
201505:201510,
201403
)

我想最终得到一个看起来像这样的向量:
 [1]  1  1  2  3  4  5  6  7  8  9 10  11  12  1  2  3  4  5  6  1

也就是说,我想计算月份记录的连续序列。任何人都可以推荐一种方法吗?我用这样的东西旋转我的轮子:
ym_date <- as.Date(paste0(ym, 01), format = "%Y%m%d")

diff(ym_date)

但一直无法走得更远,因为当我们处理几个月时,我不确定如何标记序列的开始。任何以 R、tidyverse、data.frame 为中心或不为中心的解决方案都将受到欢迎。

最佳答案

也许您可以使用 rle 尝试以下基本 R 代码

r <- unlist(sapply(rle(cumsum(c(1,round(as.numeric(diff(ym_date))/30.24)!=1)))$lengths,seq_along))

或与 ave
r <- ave(ym,cumsum(c(1,round(as.numeric(diff(ym_date))/30.24)!=1)),FUN = seq_along)

以至于
> r
[1] 1 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 1

关于r - 计算连续的月份序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60234007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com