将均值应用于数据框架

时间:2017-05-10 12:04:06

标签: r apply median

我想将超过61个单位的运行中位数应用于我的整个数据框。

root

我使用了这段代码:

df= 13.03.2017 11:42 12:42:00 877401 922800 -5.045 147 14 NA 13.03.2017 11:42 12:42:01 877440 922839 -5.045 148 14 504 ... 13.03.2017 14:40 15:40:12 864742 868109 -0.389 149 25 515

我收到错误:

df_med<-apply(df, 2, runmed, k=61)

我已经尝试排除第一行,但出现了同样的错误。

1 个答案:

答案 0 :(得分:1)

将这些数据视为多变量时间序列似乎是有意义的。我偏好图书馆zoo,但还有其他选择 有了很好的示例数据显然没有出现我嘲笑了我自己的一些。可能适用,可能不适用。

library(zoo)

# Put together a data frame with a time vector in the first column    
df <- data.frame(x=as.POSIXct(1:10*60, origin="1970-01-01"), 
                 a=c(NA, 1, 6, 4, 2, 9, 4, 3, 1, 2),
                 b=c(2, 4, 1, 5, 2, 8, 4, 6, 9, NA))

# Convert the data frame into a multivariate time series    
df.zoo <- read.zoo(df)
summary(df.zoo)

# Apply a rolling median on the time series    
rollapply(df.zoo, 3, median, na.rm=TRUE, fill=NA)

如果存在NA值,则rollapply更容易使用na.rm=TRUE并将median作为参数传递给na.omit函数,而不是处理{fill=NA 1}}或类似的方法。 {{1}}确保系列的长度与之前相同。