在R中找到第二低的非零值

时间:2016-02-10 11:17:13

标签: r min

我刚开始学习 R ,我需要一些帮助。

我想在某些列中找到最低的非零数字,但如果最低的数字为零,那么我希望得到第二低的数字。

我的代码目前看起来像这样:

aggregate(M3klar2[,32:35],M3klar2["ID"], function(x) if(min(x)>0) min(x) else if(min(x==0) ??second lowest?? )

if(min(x==0))?或其他任何建议之后我应该写什么?

2 个答案:

答案 0 :(得分:3)

您不需要if声明。

x <- c(0,0,2,3,4,5,6)
> min(x[x > 0])
[1] 2

申请特定栏目(由@Stephen Henderson建议)

apply(df[,my.choice],2, min(x[x > 0]))

或者,如果您还有负数,则可以将x>0替换为x!=0(@docendo discimus提供的说明)

答案 1 :(得分:0)

x <- c(0,0,2,3,4,5,6)
min(setdiff(x,0))
# [1] 2

将选择矢量AFTER 0中的最低值。