Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按R中的间隔计算列的平均值_R - Fatal编程技术网

按R中的间隔计算列的平均值

按R中的间隔计算列的平均值,r,R,我找不到我的问题的副本,所以我希望你能帮助我 通过一个简单的例子,我希望根据指定的窗口大小(称之为n)计算一列的平均值 我计算了一列下的行平均值,以n行为间隔,如下所示: #For n = 4, row 4 is calculated as (11+12+13+14)/n #For n =4, row 5 is calculated as (12+13+14+15)/n #And so on ... 我查看了以下帖子,例如: 我在下面尝试了这段代码,但无法获得写入解决方案 data&

我找不到我的问题的副本,所以我希望你能帮助我

通过一个简单的例子,我希望根据指定的窗口大小(称之为
n
)计算一列的平均值

我计算了一列下的行平均值,以n行为间隔,如下所示:

#For n = 4, row 4 is calculated as (11+12+13+14)/n
#For n =4, row 5 is calculated as (12+13+14+15)/n
#And so on ...
我查看了以下帖子,例如:

  • 我在下面尝试了这段代码,但无法获得写入解决方案

    data<-data %>% mutate(z=rollapplyr(y,10,FUN=mean,by=4))
    
    data%变异(z=rollappyr(y,10,FUN=mean,by=4))
    

    谢谢你的帮助。谢谢你

    你可以用图书馆动物园的滚动平均值来做

    data <- data.frame(x = rep(1:10,1), y = rep(11:20, 1))
    
    result <- structure(list(x = 1:10, y = 11:20, z = c("NA", "NA", "NA", "12.5", 
                                                        "13.5", "14.5", "15.5", "16.5", "17.5", "18.5")), class = "data.frame", .Names = c("x", 
                                                                                                                                           "y", "z"), row.names = c(NA, -10L))
    
    data您可以将
    outer()
    与自定义函数一起使用。
    diag()
    为您提供所需的值

    myMean <- function(x, y) mean(dat[seq(x, y), 2])
    mmean <- diag(outer(1:nrow(dat), (4:nrow(dat)), Vectorize(myMean)))
    
    dat$z <- NA  # initialize column
    dat$z[-(1:3)] <- mmean
    
    #     x  y    z
    # 1   1 11   NA
    # 2   2 12   NA
    # 3   3 13   NA
    # 4   4 14 12.5
    # 5   5 15 13.5
    # 6   6 16 14.5
    # 7   7 17 15.5
    # 8   8 18 16.5
    # 9   9 19 17.5
    # 10 10 20 18.5
    
    myMean
    
    data <- data.frame(x = rep(1:10,1), y = rep(11:20, 1))
    
    result <- structure(list(x = 1:10, y = 11:20, z = c("NA", "NA", "NA", "12.5", 
                                                        "13.5", "14.5", "15.5", "16.5", "17.5", "18.5")), class = "data.frame", .Names = c("x", 
                                                                                                                                           "y", "z"), row.names = c(NA, -10L))
    
    library(zoo)
    data$z <- rollmeanr(data$y,4,fill=NA)
    
    myMean <- function(x, y) mean(dat[seq(x, y), 2])
    mmean <- diag(outer(1:nrow(dat), (4:nrow(dat)), Vectorize(myMean)))
    
    dat$z <- NA  # initialize column
    dat$z[-(1:3)] <- mmean
    
    #     x  y    z
    # 1   1 11   NA
    # 2   2 12   NA
    # 3   3 13   NA
    # 4   4 14 12.5
    # 5   5 15 13.5
    # 6   6 16 14.5
    # 7   7 17 15.5
    # 8   8 18 16.5
    # 9   9 19 17.5
    # 10 10 20 18.5
    
    dat <- data.frame(x=rep(1:10, 1), y=rep(11:20, 1))