如何在R資料框中查詢不包括零的行最小值,如果所有值為0則返回0?
要查詢R資料框中不包括零的行最小值,如果所有值為0則返回0,我們可以按照以下步驟操作:
- 首先,建立一個數據框。
- 然後,使用if函式和apply函式查詢不包括零的行最小值。
示例1
建立資料框
讓我們建立一個如下所示的資料框:
x1<-sample(c(0,1,5),20,replace=TRUE) x2<-sample(c(0,10,20),20,replace=TRUE) x3<-sample(c(0,5,10),20,replace=TRUE) df1<-data.frame(x1,x2,x3) df1
執行上述指令碼後,將生成以下輸出(由於隨機化,此輸出在您的系統上可能會有所不同):
x1 x2 x3 1 0 10 0 2 0 0 0 3 1 10 0 4 5 20 0 5 5 20 10 6 1 10 5 7 0 10 10 8 5 0 10 9 0 20 0 10 1 20 10 11 1 10 5 12 5 0 5 13 0 0 0 14 0 0 5 15 5 20 0 16 5 20 0 17 5 20 10 18 5 10 10 19 0 20 5 20 1 10 10
查詢不包括零的行最小值,如果所有值為0則返回0
使用apply函式和if else函式查詢不包括零的行最小值,如果所有值為0則返回0:
x1<-sample(c(0,1,5),20,replace=TRUE) x2<-sample(c(0,10,20),20,replace=TRUE) x3<-sample(c(0,5,10),20,replace=TRUE) df1<-data.frame(x1,x2,x3) apply(df1,1,function(x) if(all(x==0)) 0 else min(x[x>0]))
輸出
[1] 10 0 1 5 5 1 10 5 20 1 1 5 0 5 5 5 5 5 5 1
示例2
建立資料框
讓我們建立一個如下所示的資料框:
y1<-sample(c(0,50),20,replace=TRUE) y2<-sample(c(0,75),20,replace=TRUE) y3<-sample(c(0,90),20,replace=TRUE) df2<-data.frame(y1,y2,y3) df2
y1 y2 y3 1 50 75 90 2 0 5 0 3 0 75 0 4 50 0 90 5 50 0 90 6 0 0 0 7 0 75 90 8 50 75 0 9 0 75 90 10 50 0 0 11 0 0 0 12 50 0 0 13 0 0 0 14 0 0 90 15 50 75 90 16 50 75 0 17 50 75 90 18 50 75 0 19 0 75 90 20 50 0 90
查詢不包括零的行最小值,如果所有值為0則返回0
使用apply函式和if else函式查詢不包括零的行最小值,如果所有值為0則返回0:
y1<-sample(c(0,50),20,replace=TRUE) y2<-sample(c(0,75),20,replace=TRUE) y3<-sample(c(0,90),20,replace=TRUE) df2<-data.frame(y1,y2,y3) apply(df2,1,function(x) if(all(x==0)) 0 else min(x[x>0]))
輸出
[1] 50 75 75 50 50 0 75 50 75 50 0 50 0 90 50 50 50 50 75 50
廣告