如何基于百分比列表逐步递减初始数值?
实现初始值依次乘以百分比的递减操作
你可以用R语言中的cumprod()函数高效完成这个需求,它能计算向量的累积乘积,再结合初始值就能得到每一步依次相乘后的结果。
方法一:基础R实现
starting_value <- 127 pcts <- c(0.64, 0.07, 0.44, 0.79, 0.67, 0.12, 0.58, 0.56, 0.59, 0.21) # 计算每一步的递减结果 step_results <- starting_value * cumprod(pcts) # 合并为数据框查看完整过程 result_df <- data.frame( 所用百分比 = pcts, 当前值 = step_results ) print(result_df)
cumprod(pcts)会生成一个累积乘积向量:第一个元素是0.64,第二个是0.64×0.07,第三个是0.64×0.07×0.44……以此类推,再乘以初始值127就得到每一步的递减结果。
方法二:tidyverse(dplyr)实现
如果你习惯用tidyverse工具链,可以用dplyr的mutate()来生成结果列:
library(dplyr) starting_value <- 127 data.frame(pcts = c(0.64, 0.07, 0.44, 0.79, 0.67, 0.12, 0.58, 0.56, 0.59, 0.21)) %>% mutate( 累积百分比 = cumprod(pcts), 当前值 = starting_value * 累积百分比 )
运行后会直接得到包含原始百分比、累积百分比和每一步当前值的数据框。
内容的提问来源于stack exchange,提问作者joshbrows
相关产品推荐
相关产品推荐

