如何在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

更新於: 2021年8月14日

830 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告