如何在 R 数据框中基于几个列找到每一行的最小值?
为了在 R 数据框中基于几个列找到每一行的最小值,我们可以在 with 函数内部使用 pmin 函数。
例如,如果我们有一个名为 df 的数据框,其中包含五列,例如 x、y、z、a 和 b,那么基于列 x、y 和 b 的每一行的最小值可以通过使用下面给出的命令来找到:
with(df,pmin(x,y,b))
示例 1
以下代码片段创建了一个示例数据框:
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) x4<-rnorm(20) df1<-data.frame(x1,x2,x3,x4) df1
创建了以下数据框:
x1 x2 x3 x4 1 -0.11773107 -0.82035732 -0.28450601 -1.10704509 2 -1.01962604 -2.60294139 0.45711797 0.43207151 3 1.13500837 -1.14440016 -0.26626228 -0.73794240 4 -0.80790790 -1.14806291 0.35394025 -0.12112739 5 -0.06178105 -0.57400680 -0.66666658 1.09352761 6 -0.27553943 -1.36698799 -0.31081777 0.04752593 7 0.10584138 -1.34775886 0.17752275 0.38897313 8 -0.12614587 -0.03826633 0.70551865 -1.15621529 9 1.30759989 -0.23571489 0.38343949 -0.33398701 10 0.80694222 1.01968698 0.97463771 -0.47795594 11 -1.18169096 -0.03684450 -0.59514439 -1.21205644 12 0.43798192 -0.45043310 -0.42103633 -0.81786582 13 0.08569171 -0.21929358 -0.29929403 0.48033841 14 1.03432091 -0.66014884 0.40906268 -2.26329167 15 -1.90251190 -1.19862628 0.41706688 -0.44017107 16 -0.35222400 0.37808439 -0.68560797 0.36525694 17 -1.38445655 1.73951876 1.24614256 -2.23414164 18 -1.33440782 0.50000865 0.85680768 0.13643720 19 -1.29441749 -0.18851102 -0.69235928 -0.13695773 20 0.05258651 -0.10824434 -0.06976701 0.13541223
要查找列 x2、x3 和 x4 的每一行的最小值,请将以下代码添加到上述代码片段中:
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) x4<-rnorm(20) df1<-data.frame(x1,x2,x3,x4) df1$Min_LastThree<-with(df1,pmin(x2,x3,x4)) df1
输出
如果您将以上所有给定的代码片段作为一个程序执行,它将生成以下输出:
x1 x2 x3 x4 Min_LastThree 1 -0.11773107 -0.82035732 -0.28450601 -1.10704509 -1.1070451 2 -1.01962604 -2.60294139 0.45711797 0.43207151 -2.6029414 3 1.13500837 -1.14440016 -0.26626228 -0.73794240 -1.1444002 4 -0.80790790 -1.14806291 0.35394025 -0.12112739 -1.1480629 5 -0.06178105 -0.57400680 -0.66666658 1.09352761 -0.6666666 6 -0.27553943 -1.36698799 -0.31081777 0.04752593 -1.3669880 7 0.10584138 -1.34775886 0.17752275 0.38897313 -1.3477589 8 -0.12614587 -0.03826633 0.70551865 -1.15621529 -1.1562153 9 1.30759989 -0.23571489 0.38343949 -0.33398701 -0.3339870 10 0.80694222 1.01968698 0.97463771 -0.47795594 -0.4779559 11 -1.18169096 -0.03684450 -0.59514439 -1.21205644 -1.2120564 12 0.43798192 -0.45043310 -0.42103633 -0.81786582 -0.8178658 13 0.08569171 -0.21929358 -0.29929403 0.48033841 -0.2992940 14 1.03432091 -0.66014884 0.40906268 -2.26329167 -2.2632917 15 -1.90251190 -1.19862628 0.41706688 -0.44017107 -1.1986263 16 -0.35222400 0.37808439 -0.68560797 0.36525694 -0.6856080 17 -1.38445655 1.73951876 1.24614256 -2.23414164 -2.2341416 18 -1.33440782 0.50000865 0.85680768 0.13643720 0.1364372 19 -1.29441749 -0.18851102 -0.69235928 -0.13695773 -0.6923593 20 0.05258651 -0.10824434 -0.06976701 0.13541223 -0.1082443
示例 2
以下代码片段创建了一个示例数据框:
y1<-rpois(20,5) y2<-rpois(20,1) y3<-rpois(20,2) y4<-rpois(20,3) df2<-data.frame(y1,y2,y3,y4) df2
输出
创建了以下数据框:
y1 y2 y3 y4 1 1 0 0 1 2 11 1 2 7 3 5 0 5 2 4 3 1 4 4 5 6 0 2 7 6 6 0 3 3 7 2 0 2 5 8 4 0 0 5 9 6 0 1 1 10 4 1 3 3 11 6 0 4 4 12 5 0 2 2 13 7 0 1 1 14 4 3 0 3 15 5 2 4 2 16 4 0 4 2 17 4 0 1 2 18 6 1 2 2 19 8 2 2 4 20 11 0 2 2
要查找列 y2 和 y3 的每一行的最小值,请将以下代码添加到上述代码片段中:
y1<-rpois(20,5) y2<-rpois(20,1) y3<-rpois(20,2) y4<-rpois(20,3) df2<-data.frame(y1,y2,y3,y4) df2$Min_MiddleTwo<-with(df2,pmin(y2,y3)) df2
输出
如果您将以上所有给定的代码片段作为一个程序执行,它将生成以下输出:
y1 y2 y3 y4 Min_MiddleTwo 1 1 0 0 1 0 2 11 1 2 7 1 3 5 0 5 2 0 4 3 1 4 4 1 5 6 0 2 7 0 6 6 0 3 3 0 7 2 0 2 5 0 8 4 0 0 5 0 9 6 0 1 1 0 10 4 1 3 3 1 11 6 0 4 4 0 12 5 0 2 2 0 13 7 0 1 1 0 14 4 3 0 3 0 15 5 2 4 2 2 16 4 0 4 2 0 17 4 0 1 2 0 18 6 1 2 2 1 19 8 2 2 4 2 20 11 0 2 2 0
广告