首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R中行的滑动窗口

R中行的滑动窗口
EN

Stack Overflow用户
提问于 2020-04-12 00:10:36
回答 1查看 55关注 0票数 1

我有一个数据帧,大约有50000行,我想在它上面循环,每个循环移动10行,直到它达到50000行,这是代码。

代码语言:javascript
运行
复制
for (i in 1:50000){

  if(df[[1]][i,8] > 1){

    hom <- hom + df[[1]][i,11]
  }else{
    het<-het + het[[1]][i,11]
  }
  score[i] = hom/(hom+het)

}

在代码中,我正在检查列8中的条件是真还是假,以便应用适当的函数。然后我就能得到分数了。所以我基本上想得到每个10行的分数{1-10,2-11,3-12,4-13.49990-50000}

如果你能帮上忙我会很高兴的谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-12 00:51:01

下面的代码实现了一个R函数,该函数接收表示任意大小的滑动窗口的向量和整数作为输入。该函数输出一个向量,其中包含窗口中每个分块元素的平均值(您可以调整代码以执行任何其他类型的计算)。

代码语言:javascript
运行
复制
# Function that computes an sliding window based on the mean values
compute_mean_feat <- function(vector, window) {
  mean <- c()
  for (i in 1:length(vector)) {
    if (i <= window) {
      sum <- 0
      for (k in 1:i) {
        sum  <- vector[k] + sum
      }
      mean <- c(mean, as.numeric(sum / i))
    } else{
      sum <- 0
      for (j in (i - window + 1):i) 
        sum  <- vector[j] + sum
      }
      mean <- c(mean, as.numeric(sum / i))
    }
  }
  return(mean)
}

您可以看到将滑动窗口为10的compute_mean_feat函数应用于虚拟vector的结果。

代码语言:javascript
运行
复制
# Manual example for testing
window <- 10    
vector <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
compute_mean_feat(vector, window)

对于数据框,您只需将此函数应用于所需的列,它将为您提供其行的滑动窗口向量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61159854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档