如何在R中使用NA平均每3列
我有一个带NA的矩阵,我想找出每行每3列的平均值如何在R中使用NA平均每3列,r,matrix,average,R,Matrix,Average,我有一个带NA的矩阵,我想找出每行每3列的平均值 set.seed(100) a <- matrix(sample(c(NA, 1:4), 90, replace = TRUE), 10) 代码找不到包括NA在内的列的平均值。我想知道如何修改代码。非常感谢。我们也可以通过转换为3D数组来实现这一点,然后在循环第三个边距后获得行的意思 res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE) all.equ
set.seed(100)
a <- matrix(sample(c(NA, 1:4), 90, replace = TRUE), 10)
代码找不到包括NA在内的列的平均值。我想知道如何修改代码。非常感谢。我们也可以通过转换为3D数组来实现这一点,然后在循环第三个边距后获得
行的意思
res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE)
all.equal(res, t(apply(a, 1, tapply, gl(3, 3),
mean, na.rm = TRUE)), check.attributes = FALSE)
#[1] TRUE
rest(apply(a,1,tapply,gl(3,3),mean,na.rm=TRUE))
我是个白痴,哈哈,谢谢。谢谢你的帮助。c(nrow(a),3,3)
是什么意思?谢谢。@YangYang 3D数组有3个维度,第一个是行,第二个是列,第三个是维度。这里,行数与原始矩阵的行数相同。因此,我将其指定为nrow(a)
,下一个是3,因为每个数组中只需要3列,非常感谢您的帮助!
res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE)
all.equal(res, t(apply(a, 1, tapply, gl(3, 3),
mean, na.rm = TRUE)), check.attributes = FALSE)
#[1] TRUE