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

如何在R语言数据框中按10%递增填充指定行的数值

在R数据框中按10%递增填充指定行后的数值

问题说明

你原本使用的fill()函数是tidyr包中用于填充缺失值的工具,无法实现按比例递增的计算逻辑,所以代码无法正常运行。下面提供两种可行的实现方式:

基础R实现

通过循环逐行计算,基于前一行的数值乘以1.1得到当前行的结果:

L3 <- LETTERS[1:3]
fac <- sample(L3, 10, replace = T)
d <- data.frame(x = 0, y = 1:10, fac = fac)

# 设置第5行的起始值
d$x[5] <- 10

# 从第6行到最后一行,按10%递增填充
for(i in 6:nrow(d)){
  d$x[i] <- d$x[i-1] * 1.1
}

tidyverse风格实现

如果习惯使用管道式代码,可以结合dplyr和purrr包的函数来完成,代码更简洁:

library(dplyr)
library(purrr)

L3 <- LETTERS[1:3]
fac <- sample(L3, 10, replace = T)
d <- data.frame(x = 0, y = 1:10, fac = fac) %>%
  mutate(x = case_when(
    y == 5 ~ 10,
    # 从第5行的起始值开始,生成递增序列并对应到后续行
    y > 5 ~ accumulate(x[5:(n()-1)], ~ .x * 1.1)[y - 4],
    TRUE ~ x
  ))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:33:24