如何在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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告