R使用循环将函数应用于数据帧中的ove变量

R使用循环将函数应用于数据帧中的ove变量,r,R,我希望得到一些指导 我有一些关于10秒周期内温度的数据 示例数据框如下(我的数据框有3000多行!): x听起来像是包TTR中的runmedia,您正在寻找它 runMedian(df$y, 5) ZOO软件包中还有rollmedian,以及更通用的rollapply。您是否在询问如何计算滚动中值 库zoo具有滚动中值函数 library(zoo) set.seed(1234) y <- as.data.frame(rnorm(51,38,2)) rollmedian(y,5) 图书馆

我希望得到一些指导

我有一些关于10秒周期内温度的数据

示例数据框如下(我的数据框有3000多行!):


x听起来像是包TTR中的
runmedia
,您正在寻找它

runMedian(df$y, 5)

ZOO软件包中还有
rollmedian
,以及更通用的
rollapply

您是否在询问如何计算滚动中值

zoo
具有滚动中值函数

library(zoo)
set.seed(1234)
y <- as.data.frame(rnorm(51,38,2))
rollmedian(y,5)
图书馆(动物园)
种子集(1234)

y比使用包装更粗糙。 除以5,并对列表应用中值

x <- as.data.frame(seq(0,500, by=10))

set.seed(1234)

y <- as.data.frame(rnorm(51,38,2))

df <- data.frame(x,y)
colnames(df) = c("time", "temp")

a = split(df, rep(1:11 , each = 5))
res = sapply(a, function(x) {median(x$temp)})

x这是我想要的,但不是滚动中位数,而是每5个元素的序列,例如元素1:5的中位数1,元素6:10的中位数2,元素11:15的中间值3等…希望有意义在这种情况下,我将继续使用@won782提供的答案。使用
rolldapply
by
参数:
rolldapply(y,5,中间值,by=5)
@G.Grothendieck nice!我可以问另一个快速问题吗?温度数据中的一些元素缺失,例如前5个元素是36,NA,NA,36,NA。使用上述代码的中值返回为NA,而不是36。使用上面的代码可以做到这一点吗?中位数(value,na.rm=T)你好,我可能很难解释我自己。我将尝试使用我的队列中的一些真实数据。是的,这正是我的意思。中位数(c(36,NA,NA,NA,NA),NA.rm=T)返回36。所以,如果你用中位数(x$temp,na.rm=T)代替中位数(x$temp),它就会起作用。
x <- as.data.frame(seq(0,500, by=10))

set.seed(1234)

y <- as.data.frame(rnorm(51,38,2))

df <- data.frame(x,y)
colnames(df) = c("time", "temp")

a = split(df, rep(1:11 , each = 5))
res = sapply(a, function(x) {median(x$temp)})