【问题标题】:Apply function over consecutive groups in vector [duplicate]在向量中的连续组上应用函数[重复]
【发布时间】:2015-10-10 16:40:14
【问题描述】:

我想计算三个连续变量的 meas a 向量。

例如: vec

我希望输出类似于下面的屏幕截图:

【问题讨论】:

  • 1:3 值的平均值如何得到 1.5
  • 我不知道。我一定在excel中做错了什么。我想要 1:3、4:7、8:10...
  • 好像你想要zoo::rollmean(1:15, 2)

标签: r function apply


【解决方案1】:

您可以创建以下函数来按 3 组(或任何其他数字)计算平均值:

   f <- function(x, k=3) 
     {
       for(i in seq(k,length(x),k)) 
         x[(i/k)] <- mean(x[(i-k+1):i]) 
      return(x[1:(length(x)/k)])
   }

f(1:15) [1] 2 5 8 11 14

【讨论】:

    【解决方案2】:

    我们可以用gl创建一个分组变量,然后用ave得到mean

     ave(Vec, as.numeric(gl(length(Vec), 3, length(Vec))))
    

    【讨论】:

    • 是否可以将长度设为 5 而不是 15?比如:2、5、8、11、14?
    • @mad Vec &lt;- 1:10 如果您想获得 5 个连续值的平均值,请将 gl 更改为 gl(length(Vec), 5, length(Vec))
    猜你喜欢
    • 2018-12-13
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2017-01-01
    • 2021-02-21
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多