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

R语言计算两个变量近1个月滚动比率:group1值除以上月group0值

R语言计算单月滚动比率实现方法

你的需求本质是取当前行group_1值与上一行group_0值做除法,有两种常用实现方式:

前置准备

首先确认你的数据已按时间升序排列,若原始数据为矩阵,先转成数据框:

# 矩阵转数据框示例
df <- as.data.frame(你的矩阵变量名)

你也可以用下方示例数据测试效果:

# 匹配你需求的示例数据
df <- data.frame(
  month = c("2023-01", "2023-02", "2023-03"),
  group_0 = c(11, 45, 32),
  group_1 = c(NA, 10, 60)
)

方法1:dplyr包实现(代码简洁易读)

用lag()函数直接提取上一行的group_0值计算:

library(dplyr)
df <- df %>%
  mutate(rolling_rate = group_1 / lag(group_0, n = 1))

计算结果的rolling_rate列,第二行值为10/11≈0.909,第三行值为60/45≈1.333,完全符合你给出的运算规则。

方法2:base R实现(无需安装额外包)

通过索引切片对齐需要计算的两列:

# 第一行无上月数据补NA,后续行对应相除
df$rolling_rate <- c(NA, df$group_1[-1] / df$group_0[-nrow(df)])

注意事项

如果你的月份列是字符串格式,建议先转成日期类格式再排序,避免出现时间顺序错误:

# 年月字符串转日期示例
df$month <- as.Date(paste0(df$month, "-01"))
# 按时间升序排序
df <- df[order(df$month), ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:45:04