【发布时间】:2021-11-29 06:52:39
【问题描述】:
我需要计算滚动中位数。并有以下代码
i <- 0
median_roll<-c("")
x<-c(1:10)
n<-2
y<-as.data.frame(x)
while(i < length(x)-n){
median_roll[i] <- median(y[i:i+n,])
i <- i + 1
}
在 median_roll 中产生以下 reluts
[1] "3" "4" "5" "6" "7" "8" "9"
我需要的是
[1] "2" "3" "4" "5" "6" "7" "8" "9"
【问题讨论】:
-
看起来 i:i+n 应该是 i:(i+n)。
-
@Miff 产生
[1] "2" "3" "4" "5" "6" "7" "8"的输出 -
为什么
median_roll<-c("")?!?中位数是一个数值,以median_roll<-c()开头。 -
单行:
zoo::rollapplyr(y$x, width = 3L, FUN = median)。请注意,n<-3L,而不是 2。 -
@Miff 非常感谢。有用。虽然我必须在中位数之前更改 i+1 的位置以包括 9