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

Cha*_*ham 3 r min

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

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

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

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

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

Sot*_*tos 6

你不需要if声明。

x <- c(0,0,2,3,4,5,6)
> min(x[x > 0])
[1] 2
Run Code Online (Sandbox Code Playgroud)

适用于特定列(如@Stephen Henderson 所建议)

apply(df[,my.choice],2, min(x[x > 0]))
Run Code Online (Sandbox Code Playgroud)

或者,如果您也有负数,则可以替换x>0x!=0(@docendo discimus 给出的说明)