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

R语言如何按自定义月度区间对时间序列数据进行分组处理

R语言自定义时间周期分组与筛选实现方案

首先默认使用tidyverse套件中的lubridate处理日期逻辑,dplyr做数据转换,可直接安装调用:

install.packages("tidyverse")
library(tidyverse)

需求1:按「当月15日-次月14日归为后一个月」规则分组

核心逻辑:判断日期的日序,日序大于14的日期归属到下一个月,否则归属当前月,代码实现如下:

# 预处理:将时间列转为日期格式
df <- df %>%
  mutate(Timestamp = ymd(Timestamp))

# 生成归属月份并分组汇总
df_custom_month <- df %>%
  mutate(
    belong_month = case_when(
      day(Timestamp) > 14 ~ floor_date(Timestamp, "month") + months(1),
      TRUE ~ floor_date(Timestamp, "month")
    )
  ) %>%
  # 按自定义月份、数据类型分组计算均值
  group_by(belong_month, Data) %>%
  summarise(monthly_avg = mean(Value, na.rm = TRUE), .groups = "drop")

如果需要将归属月份展示为2020-01这类字符串格式,可在mutate中添加format(belong_month, "%Y-%m")进行转换。

需求2:筛选每月2-14日片段并归属对应月份

核心逻辑:先按日序筛选符合条件的行,直接取原日期所在月份作为归属月即可:

df_2to14 <- df %>%
  mutate(Timestamp = ymd(Timestamp)) %>%
  # 筛选每月2日到14日的数据
  filter(day(Timestamp) %in% 2:14) %>%
  # 归属月份为原日期所在月份
  mutate(belong_month = floor_date(Timestamp, "month")) %>%
  # 按需分组汇总
  group_by(belong_month, Data) %>%
  summarise(period_avg = mean(Value, na.rm = TRUE), .groups = "drop")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:27:03