【问题标题】:R getting mean for every nth rowR 每第 n 行均值
【发布时间】:2015-05-14 01:34:47
【问题描述】:

有没有更优雅的方法来获取当前到前 n 行的平均值?例如,

x=replicate(3, rnorm(20))

我想要的是获得每行 + 2 行之前的第 2 列的平均值。我目前这样做的方式是 1)创建一个空列 2)循环遍历每一行并从前 2 行获取值,意思是它,然后将其存储在新列中。这很乏味,所以我想知道是否有更清洁、更快的方法?提前致谢。阿迪

【问题讨论】:

    标签: r matrix apply sapply


    【解决方案1】:

    试试filter - 你所做的是滚动平均值。

    filter(x[,2], rep(1/3,3), sides=1)
    

    【讨论】:

    • 谢谢;滚动平均值是正确的。我四处搜索,找到了一个图书馆动物园,这对我来说非常有用。 library(zoo) ; rollapply(x[,2], 2, mean, na.pad = 1, align="right")
    【解决方案2】:

    感谢 thelatemail,我想要的是滚动平均值。我找到了解决方案。

    library(zoo)
    x=replicate(3, rnorm(20))
    
    rollapply(x[,2], 2, mean, na.pad = 1, align="right")
    

    【讨论】:

    • 是的,这相当于我的回答中的filter(x[,2], rep(1/2,2), sides=1)rollapply 是同类逻辑的更通用版本。很高兴看到你把它整理出来。
    • 您好,我有一个 7700 x 1 的数据框。 7700 是天数。我想创建一个 7 天平均值的 1100 x 1 数据集,以便在几周内获得数据。所以第一个条目应该是平均值(1:7),第二个条目应该是平均值(8.14)等等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    相关资源
    最近更新 更多