gpt4 book ai didi

r - 每 n 行每列的统计信息

转载 作者:行者123 更新时间:2023-12-02 04:28:29 26 4
gpt4 key购买 nike

我想计算每 n 个(在我的例子中每 6 个)行(或样本)的平均值和标准差。以下函数给出了每 6 行的平均值(96 行给出了 16 个平均值)

colMeans(matrix(data.trim$X0, nrow=6))

我想对所有列(总共 1280 个平均值)执行此操作。我尝试运行这个函数:

colMeans(matrix(data.trim, nrow=6))

但这根本不起作用,我收到以下错误消息:

Error in colMeans(matrix(data.trim, nrow = 6)) : 'x' must be numeric

另外:警告消息:

In matrix(data.trim, nrow = 6) : data length [80] is not a sub-multiple or multiple of the number of rows [6]

最佳答案

您可以使用 sapply 将函数应用到每一列:

sapply(iris[1:4], function(x) colMeans(matrix(x, nrow=6)))
Sepal.Length Sepal.Width Petal.Length Petal.Width
[1,] 4.950000 3.383333 1.450000 0.2333333
[2,] 4.850000 3.316667 1.483333 0.2000000
[3,] 5.183333 3.633333 1.316667 0.2500000

...

[23,]     6.533333    2.950000     5.583333   1.9333333
[24,] 6.516667 3.033333 5.316667 2.1333333
[25,] 6.383333 3.033333 5.266667 2.1333333

与手动创建前六行的平均值相比:

colMeans(iris[1:6, 1:4])
Sepal.Length Sepal.Width Petal.Length Petal.Width
4.9500000 3.3833333 1.4500000 0.2333333

您还可以使用给定正确的 by 参数的 aggregate 来执行此操作:

aggregate(iris[1:4], by=list((seq(nrow(iris))-1) %/% 6), FUN=mean)
Group.1 Sepal.Length Sepal.Width Petal.Length Petal.Width
1 0 4.950000 3.383333 1.450000 0.2333333
2 1 4.850000 3.316667 1.483333 0.2000000
3 2 5.183333 3.633333 1.316667 0.2500000

...

这通过创建一个向量来识别要平均的组来实现:

(seq(nrow(iris))-1) %/% 6
[1] 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 7 7 8 8 8 8
[53] 8 8 9 9 9 9 9 9 10 10 10 10 10 10 11 11 11 11 11 11 12 12 12 12 12 12 13 13 13 13 13 13 14 14 14 14 14 14 15 15 15 15 15 15 16 16 16 16 16 16 17 17
[105] 17 17 17 17 18 18 18 18 18 18 19 19 19 19 19 19 20 20 20 20 20 20 21 21 21 21 21 21 22 22 22 22 22 22 23 23 23 23 23 23 24 24 24 24 24 24

sapply 解决方案返回一个矩阵,而 aggregate 解决方案返回一个数据帧(如果更需要)。

关于r - 每 n 行每列的统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25150892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com