在R中,如何生成一个由 Dataframe 中所有列向量的均值组成的数据集?

llycmphe  于 2023-02-17  发布在  其他
关注(0)|答案(4)|浏览(127)

我可以用下面的命令生成一个数据集。

df <- replicate( 100, runif(n=20))

这创建了一个维度为[20,100]的矩阵,我可以将其转换为一个100列20行的数据框。
如何生成一个包含所有列向量均值的新数据框(df每列的均值)?
谢谢你的帮助。

sulc1iza

sulc1iza1#

您可以使用colMeans

data <- replicate(100, runif(n=20))
means <- colMeans(data)
b4wnujal

b4wnujal2#

生成数据:

data <- replicate(100, runif(n=20))

列、行的平均值:

col_mean <- apply(data, 2, mean)
row_mean <- apply(data, 1, mean)

列、行的标准差

col_sd   <- apply(data, 2, sd)
row_sd   <- apply(data, 1, sd)
hmae6n7t

hmae6n7t3#

如果我理解正确话:apply(replicate(100,runif(n=20)),2,mean)

iszxjhcz

iszxjhcz4#

在Nico的答案的基础上,你可以调用runif(),将其格式化为矩阵,然后取其colMeans,这样做更快,而且与其他答案等效。

library(rbenchmark)
#reasonably fast
f1 <- function() colMeans(replicate(100,runif(20)))
#faster yet
f2 <- function() colMeans(matrix(runif(20*100), ncol = 100))

benchmark(f1(), f2(), 
          order = "elapsed", 
          columns = c("test", "elapsed", "relative"),
          replications=10000)

#Test results
  test elapsed relative
2 f2()    0.91 1.000000
1 f1()    5.10 5.604396

相关问题