R使用循环来应用函数来移动数据帧中的变量

时间:2014-08-13 14:14:59

标签: r

我希望得到一些指导。

我有一些数据显示温度超过10秒。

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

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)

X是时间,Y是温度。

现在我对循环有垃圾,但我想从每50秒的中断中提取中值温度,即每5个元素串联的中位数。希望这是有道理的。

整个下午都试图玩循环,现在失去了所有希望......这在R中是否可行?

3 个答案:

答案 0 :(得分:0)

来自包TTR的runMedian听起来就像你要找的那样

runMedian(df$y, 5)

ZOO包中还有rollmedian和更一般的rollapply

答案 1 :(得分:0)

您是否在询问如何计算滚动中位数?

zoo具有滚动中值函数

library(zoo)
set.seed(1234)
y <- as.data.frame(rnorm(51,38,2))
rollmedian(y,5)

希望这有帮助。

答案 2 :(得分:0)

比使用包装更粗糙。 拆分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)})