【发布时间】:2016-08-12 09:02:18
【问题描述】:
这里是非常基本的问题!在 10 x 2 数据帧上,我想计算每列的平均值并将结果放入一个新的 1 x 2 矩阵中。
colmeans 计算平均值,但将结果放在 2 x 1 向量中。
尝试转置向量会给出错误消息“转置错误(AverageX):l 必须是一个列表。”
作为一种解决方法,我创建了一个空的 1 x 2 矩阵(填充了 NA),然后使用 rbind 将平均向量与空矩阵合并,然后删除了 NA。
它有效,但我敢打赌用两行代码而不是四行代码也可以做到。有人有更好的方法来实现这一目标吗?非常感谢您的帮助。
df <- data.frame(Price = c(1219, 1218, 1220, 1216, 1217, 1218, 1218, 1207, 1206, 1205), XXX = c( 1218, 1218, 1219, 1218, 1221, 1217 , 1217, 1216, 1219, 1216))
Average <- colMeans(df, na.rm = TRUE) #result is a vector => turn it into a 1xm matrix
AverageMatrix <- matrix(nrow = 1, ncol = 2)
AverageMatrix <- rbind(AverageMatrix, Average)
AverageMatrix<- AverageMatrix[-1, , drop = FALSE]
编辑: @akrun 创建一个平均值矩阵并为矩阵的每一列创建一个平均值是相似但技术上不同的问题,因此在我看来这不是重复的。该问题表明我已经知道如何计算矩阵每一列的平均值,并且我想要一种更有效的方法将该结果存储为矩阵,这是另一个问题中未解决的简单问题。
【问题讨论】:
-
矩阵(平均,nrow = 1,ncol = 2)?
-
或
matrix(colmeans(df), 1, 2)。请注意,向量在 R 中没有维度。 -
Average <- t(t(colMeans(df, na.rm = TRUE)))? -
非常感谢大家
t(colMeans(df, na.rm = TRUE))在 1 中复制了我的 4 行代码,正是我所需要的。更喜欢 Allan T 的答案,因为它更简单。想要将其作为回复,以便我可以将问题标记为已回答?