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

如何在R中筛选周度数据、计算日差周差并分组

R实现日期价格数据的日差、周差计算与分组处理

步骤1:加载依赖包

先加载数据操作和日期处理的工具包:

library(dplyr)
library(lubridate)

步骤2:构造原始数据框

把给定的日期和价格转换成R可处理的格式,用dmy()解析日期字符串:

# 原始数据
df <- tibble(
  Date = dmy(c("2-Jul-13", "3-Jul-13", "4-Jul-13", "5-Jul-13", "8-Jul-13", "9-Jul-13", "10-Jul-13", "11-Jul-13")),
  Price = c(20, 22, 30, 18, 12, 24, 28, 14)
)

# 若需要添加期望输出中的后续示例数据
df_extra <- tibble(
  Date = dmy(c("12-Jul-13", "15-Jul-13", "16-Jul-13")),
  Price = c(18, 12, 20)
)
df <- bind_rows(df, df_extra)

步骤3:计算day_diff

用lag()函数获取前一日价格,首个值设为0(以第一行价格作为默认值):

df <- df %>%
  mutate(day_diff = Price - lag(Price, default = first(Price)))

步骤4:计算week_diff与按周分组

按照以首个日期为起始、每7天为一个周期的规则分组(匹配你示例中9-Jul与2-Jul的周差计算逻辑),仅在每周首个数据行填充周差值,其余行留空:

df <- df %>%
  # 按7天间隔划分周组
  mutate(week_group = cut(Date, breaks = seq(first(Date), max(Date)+weeks(1), by="week"))) %>%
  # 标记每周的首个数据行
  group_by(week_group) %>%
  mutate(is_week_first = row_number() == 1) %>%
  ungroup() %>%
  # 计算周差值:当前周首个价格 - 上一周首个价格
  mutate(
    week_first_prices = Price[is_week_first],
    week_diff = if_else(is_week_first, week_first_prices - lag(week_first_prices, default = NA), NA_real_)
  ) %>%
  # 移除中间辅助列
  select(-week_group, -is_week_first, -week_first_prices)

步骤5:输出结果

用print()函数输出,将NA显示为空以匹配期望格式:

print(df, na.print = "")

输出效果

最终输出如下(与期望格式一致):

Date Price day_diff week_diff
1 2013-07-02    20        0         
2 2013-07-03    22        2         
3 2013-07-04    30        8         
4 2013-07-05    18      -12         
5 2013-07-08    12       -6         
6 2013-07-09    24       12         4
7 2013-07-10    28        4         
8 2013-07-11    14      -14         
9 2013-07-12    18        4         
10 2013-07-15    12       -6         
11 2013-07-16    20        8        -4

注:若你的周定义是自然周(如周一/周日起始),可修改cut()的breaks参数,或改用lubridate::floor_date(Date, "week", week_start=1)来定义周组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:20:38