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

R语言如何使用mutate函数跨行计算相邻行比值并新增列

解决方案

你原写法的问题是把month列的数值直接当行索引用了,示例里month取值从10开始,和数据框实际行号(1-6)不匹配,自然算不对结果。
跨行取上一行值直接用dplyr内置的lag()函数即可,这个函数默认会给序列首位返回NA,刚好符合首行填空的要求,不需要额外处理。

完整可运行代码

# 加载dplyr,未安装请先运行 install.packages("dplyr")
library(dplyr)

month <- c(10,11,12,13,14,15)
sell <-c(258356,278958,287928,312254,316287,318999)
df <- data.frame(month, sell)

df <- df %>%
  mutate(resultat = lag(sell) / sell)

输出结果

运行后得到的数据框和预期完全一致:

month   sell  resultat
1    10 258356        NA
2    11 278958 0.9261466
3    12 287928 0.9688464
4    13 312254 0.9220955
5    14 316287 0.9872489
6    15 318999 0.9914984

注:lag()是按数据框当前的行顺序取前值,如果你后续需要先排序再计算,只需要在mutate前加arrange(month)即可,不会因为month列的数值大小、是否连续影响计算结果,比手动写位置索引的稳定性高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 00:45:38