r - 如何计算R中某些连续数据值的平均值

标签 r

例如,我有一个数据集

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,然后 tapplymean 应用到每个组中 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/

相关文章:

限制R中绘图中水平线的长度

python - 从 R 转到 Python,数据框的 Python 等价物是什么?

r - 在 ggplot 中动态定位在多行上的表达式

xml - R XML getNodeset 找不到节点

r - "missing value where TRUE/FALSE needed"错误 vcd::mosaic

R - 我是否需要使用 print() 添加显式换行符?

r - r 中不包括 NA 的列长度

r - 调用 httr::oauth_service_token() 时硬崩溃 - 双重释放或损坏(fasttop)

r - 对每行包含多个因子的数据帧进行一次热编码

r - Shiny 的 rhandsontable 对自身有反应