gpt4 book ai didi

R中的滚动中位数

转载 作者:行者123 更新时间:2023-12-04 16:23:12 25 4
gpt4 key购买 nike

我需要计算滚动中位数。并有以下代码

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"

最佳答案

这里有三个选项。
首先是数据。

x <- 1:10
y <- data.frame(x)
n <- 2L

1 基础 R,for 循环。

median_roll <- numeric(length(x) - n)
for(i in seq_along(median_roll)){
median_roll[i] <- median(y[i:(i+n), ])
}

median_roll
#[1] 2 3 4 5 6 7 8 9

2 Base R,sapply 循环。

sapply(seq_along(median_roll), \(i, n) median(y[i:(i+n), ]), n = 2L)
#[1] 2 3 4 5 6 7 8 9

3zoo

zoo::rollapplyr(y$x, width = 3L, FUN = median)
#[1] 2 3 4 5 6 7 8 9

关于R中的滚动中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69510657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com