我剛開始學習R我需要一些幫助。在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))?
或其他任何建議寫什麼?
我剛開始學習R我需要一些幫助。在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))?
或其他任何建議寫什麼?
你並不需要一個if
聲明。
x <- c(0,0,2,3,4,5,6)
> min(x[x > 0])
[1] 2
要應用到特定的列(由@Stephen亨德森的建議)
apply(df[,my.choice],2, min(x[x > 0]))
或者,如果你也有負數,您可以用x!=0
(由@docendo discimus給予澄清)取代x>0
..所以我認爲他想要應用(df [,my.choice],2,min(x [x> 0]))' –
對於特定的列和對於每個個體的「ID」也是如此。因爲同一個人出現在更多 – Cham
最低的非零數字不一定等於最低的正數(即I woul d建議使用'min(x [x!= 0]))而不是 –
歡迎使用stackoverflow。請參閱幫助部分的巡視和常見問題解答。請把你的代碼放在'code section'中。此外,代碼的當前結果是什麼以及您嘗試了哪些內容。 –
一個稍微黑客的方法是'min(x [!! x])' –