如何确定R数据帧列中具有最小值和最大值的行?

在数据分析中,我们经常需要确定最小值和最大值,因为这些值有助于我们理解所考虑的列或变量的限制。可以通过在单个方括号中使用which.max表示最大值,并使用which.min表示最小值来提取行。

示例

请看以下数据帧-

x1<-LETTERS[1:20]
x2<-rpois(20,5)
x3<-rexp(20,2)
x4<-rexp(20,5)
df1<-data.frame(x1,x2,x3,x4)
df1

输出结果

 x1 x2     x3        x4
1 A 7 0.56888750 0.10767756
2 B 7 0.04138254 0.01507087
3 C 3 0.82145385 0.02568754
4 D 4 0.07945021 0.51976803
5 E 7 0.73930797 0.41403820
6 F 7 0.05651587 0.04107620
7 G 4 0.11206284 0.55322510
8 H 3 0.33525532 0.29126855
9 I 6 0.76841536 0.55258446
10 J 2 0.96441097 0.29656683
11 K 1 0.10678610 0.05482085
12 L 14 0.28394648 0.15006675
13 M 1 0.96666190 0.21007950
14 N 4 1.80137393 0.07231502
15 O 8 0.65978932 0.19218883
16 P 6 0.46538207 0.13262744
17 Q 4 0.15772843 0.31552748
18 R 6 0.07239103 0.38449618
19 S 7 0.46414726 0.04460063
20 T 4 0.12917123 0.76904118

确定具有特定列的最大值和最小值的行-

示例

df1[which.max(df1$x2),]

输出结果

   x1 x2     x3       x4
12 L 14 0.2839465 0.1500667

示例

df1[which.min(df1$x2),]

输出结果

   x1 x2       x3       x4
11 K  1    0.1067861 0.05482085

示例

df1[which.min(df1$x3),]

输出结果

 x1 x2       x3       x4
2 B 7    0.04138254 0.01507087

示例

df1[which.min(df1$x4),]

输出结果

  x1 x2     x3        x4
2 B  7  0.04138254 0.01507087

让我们看另一个例子-

示例

y1<-sample(1:100,20)
y2<-sample(1:10,20,replace=TRUE)
y3<-sample(20:100,20,replace=TRUE)
y4<-sample(50:100,20,replace=TRUE)
y5<-rpois(20,15)
df2<-data.frame(y1,y2,y3,y4,y5)
df2

输出结果

   y1 y2 y3 y4 y5
1  20 10 64 81 19
2 100 5  29 61 20
3  93 4  61 68 14
4  84 2  43 76 17
5  94 1  37 81 6
6  41 1 100 76 19
7  8  5 78 79 19
8  39 2 28 53 19
9  74 2 72 73 12
10 81 3 30 77 15
11 63 5 27 52 21
12 82 6 24 95 19
13 11 10 48 89 12
14 2  3 69 55 13
15 19 3 89 85 18
16 77 1 93 91 18
17 13 8 45 97 13
18 31 1 92 79 9
19 30 4 30 97 15
20 22 8 25 59 19

示例

df2[which.min(df2$y1),]

输出结果

y1 y2 y3 y4 y5
14 2 3 69 55 13

示例

df2[which.min(df2$y2),]

输出结果

  y1 y2 y3 y4 y5
5 94 1  37 81 6

示例

df2[which.max(df2$y2),]

输出结果

  y1 y2 y3 y4 y5
1 20 10 64 81 19

示例

df2[which.min(df2$y3),]

输出结果

   y1 y2 y3 y4 y5
12 82  6 24 95 19

示例

df2[which.min(df2$y5),]

输出结果

  y1 y2 y3 y4 y5
5 94 1  37 81 6