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

在R语言中基于特定序列计算特定类型的加权均值

问题描述

现有如下数据,需对Prob列按特定规则计算加权均值:

library("tidyverse")
Mydata <-
  tibble(
    id = c(1,2,3,4,5,6,7,8,9,10),
    AGE = c(15,16,17, 18, 19, 20, 21, 22, 23,24),
    Prob = c(25,30,43,43,25,25,25,25,67,33) 
  )

计算逻辑示例(以AGE15、AGE16为例):

  • AGE15对应值:(Prob[1] + Prob[2]*2 + Prob[3]*2 + Prob[4]*2 + Prob[5])/8
  • AGE16对应值:(Prob[2] + Prob[3]*2 + Prob[4]*2 + Prob[5]*2 + Prob[6])/8
    后续每行按相同滑动窗口规则计算,最终需得到包含原始数据与加权均值列的结果。
解决方案

可以借助slider包的滚动窗口函数实现需求,步骤如下:

  1. 安装并加载依赖包(若未安装):
install.packages("slider")
library(slider)
  1. 为原始数据添加加权均值列:
Mydata <- Mydata %>%
  mutate(weighted_prob = slide_dbl(
    .x = Prob,
    .f = ~ sum(.x * c(1,2,2,2,1)) / 8,
    .before = 0,
    .after = 4,
    .complete = TRUE  # 仅保留能取到完整5行窗口的记录,若要保留所有行可改为FALSE,缺失值用NA填充
  ))

执行后得到的结果示例:

# A tibble: 6 × 4
     id   AGE  Prob weighted_prob
  <dbl> <dbl> <dbl>         <dbl>
1     1    15    25          33.5
2     2    16    30          34.1
3     3    17    43          32.6
4     4    18    43          28.1
5     5    19    25          26.2
6     6    20    25          28.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 13:21:15