You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中基于位置而非实际日期切割日期向量?

按日期在列表中的位置切割分组

嗨,我完全get你的需求啦——你不想基于日期的实际时间值来分组,而是想直接按这些日期在向量/列表里的位置顺序来切割,对吧?

你原来用cut()处理日期的思路没问题,但直接给cut()传入位置数值(比如0、2)是行不通的,因为cut()会把这些数值当成日期来解析,自然会出错。我们只需要换个处理对象:把日期的位置索引传给cut()就可以了!

解决方案示例

library(tidyverse)

# 你的原始日期向量
dates <- parse_date(c("2018-02-01", "2018-02-15", "2018-02-20", "2018-03-20"))

# 按位置切割:用seq_along()获取每个元素的位置索引
cut.dates <- cut(seq_along(dates), breaks = c(0, 2, length(dates)))

# 查看分组结果
table(cut.dates)

运行这段代码后,你会得到这样的输出:

cut.dates
 (0,2] (2,4] 
     2      2 

完美实现了把前2个日期分为一组,剩下的日期分为另一组的需求!

补充说明

  • 如果你的日期是存储在数据框的列里(比如df$dates),想按行位置分组的话,把length(dates)换成nrow(df)就可以了。
  • 要是需要更灵活的分组,比如分成3组、4组,只需要调整breaks参数的数值就行。比如想分成「前1个、中间2个、最后1个」三组:
    cut.dates <- cut(seq_along(dates), breaks = c(0, 1, 3, length(dates)))
    table(cut.dates)
    
  • 另外,用findInterval()也能实现类似的分组效果,返回的是组编号(更适合后续的分组操作):
    group_num <- findInterval(seq_along(dates), c(0, 2, length(dates)))
    table(group_num)
    

内容的提问来源于stack exchange,提问作者stackinator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:08:54