排除每行的最低值

时间:2016-10-25 13:17:35

标签: r average minimum

我的数据集中的每一行都有8个案例,我需要找到其中7个的平均值,不包括最低值。

因此,例如,我的第一行如下:

15 13 8 22 20 12 8 8 

所以,最低值将是8,那么剩余的7个案例的平均值将是14.显然,我不想手动这样做,所以有一个功能可以让我这样做直接在R?

我使用apply(data,1,min)函数查找每行的最低值。有没有办法让R给我每行的平均值,同时排除这个平均值的相应最小值?

谢谢!

1 个答案:

答案 0 :(得分:2)

我们可以找到带有max.col的最低值索引,带有行索引的cbind,将这些元素分配给NA并获取rowMeans

m1[cbind(1:nrow(m1), max.col(-m1, "first"))] <- NA
rowMeans(m1, na.rm = TRUE)
#[1] 14.00000 14.28571

数据

m1 <- rbind(c(15, 13, 8, 22, 20, 12, 8, 8),  c(15, 13, 9, 23, 20, 12, 4, 8))