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

8wigbo56  于 2023-02-20  发布在  其他
关注(0)|答案(4)|浏览(129)

我可以用runif函数生成20个均匀分布的观测值:runif(n=20)和100份相同分布的重复样品,如下所示。

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

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

vi4fp9gy

vi4fp9gy1#

您可以使用colMeans

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

4xy9mtcn2#

生成数据:

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)
uqjltbpv

uqjltbpv3#

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

vlju58qv

vlju58qv4#

在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

相关问题