我对数据进行了排序。我需要计算最低20%的样本数据的平均值。如何在R中编写命令?
x<- matrix (1:10, ncol = 2)
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
我尝试过以下方法: -
es<- mean(head(x, .2 * nrow(x)))
但答案是错误的。它给出了(1 + 6)/ 2的平均值。我希望它能找到每列中最低2个数据的平均值。它应该给我答案;
[,1] [,2]
1.5 6.5
由于
答案 0 :(得分:0)
> apply(x, 2, function(z) mean(z[order(z)][1:2]) )
[1] 1.5 6.5
查看?apply
关于矩阵或数据帧的全数字或全字符子集的逐行或逐列操作。
这实际上是最低40%的值,因为2/5 = 0.4。如果你想要这是敏感的&#34;不同的长度(仍然要求40%而不是20%)你会做类似的事情:
> apply(x, 2, function(z) mean(z[order(z)][1:(length(z)*.4)]) )
[1] 1.5 6.5