我有一个数据帧,大约有50000行,我想在它上面循环,每个循环移动10行,直到它达到50000行,这是代码。
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}
如果你能帮上忙我会很高兴的谢谢
发布于 2020-04-12 00:51:01
下面的代码实现了一个R函数,该函数接收表示任意大小的滑动窗口的向量和整数作为输入。该函数输出一个向量,其中包含窗口中每个分块元素的平均值(您可以调整代码以执行任何其他类型的计算)。
# 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
的结果。
# Manual example for testing
window <- 10
vector <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
compute_mean_feat(vector, window)
对于数据框,您只需将此函数应用于所需的列,它将为您提供其行的滑动窗口向量。
https://stackoverflow.com/questions/61159854
复制相似问题