例如,我有一个数据集
a<-c(1,2,3,4,5,6,7,8,9)
我想计算每三个连续数据值的平均值。比如说数据值
1:3,4:6,7:9
我应该使用什么命令?
最佳答案
1) rollapply 试试这个:
library(zoo)
a <- 1:9
rollapply(a, 3, mean, by = 3, align = "left", partial = TRUE)
## [1] 2 5 8
如果a
的长度不是3的倍数,它也可以工作,在这种情况下,它仍然对最后的小部分进行平均。如果您希望删除末尾的任何一小部分,请省略 partial=TRUE
参数。如果您知道 a
的长度始终是 3 的倍数,则可以省略 partial = TRUE
参数,因为在这种情况下它不起作用。
2) tapply 这是第二种替代方法。 c(gl(n, 3, n))
创建长度为 c(1, 1, 1, 2, 2, 2, ...))
的分组向量n
,然后 tapply
将 mean
应用到每个组中 a
的值:
n <- length(a)
tapply(a, c(gl(n, 3, n)), mean)
## 1 2 3
## 2 5 8
3) 聚合 与 tapply
类似,但提供数据框作为输出:
n <- length(a)
group <- gl(n, 3, n)
aggregate(a ~ group, FUN = mean)
## group a
## 1 1 2
## 2 2 5
## 3 3 8
关于r - 如何计算R中某些连续数据值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645148/