R数据帧的一行可以在列中具有多种方式,并且这些值可以是数字,逻辑,字符串等。基于行号查找值很容易,但是基于值查找行号却很不同。如果要在特定列中查找特定值的行号,则可以提取整行,这似乎是一种更好的方法,可以使用单个方括号来获取行的子集。
请看以下数据帧-
x1<-rnorm(20,0.5) x2<-rpois(20,2) x3<-rpois(20,5) x4<-rpois(20,10) x5<-rnorm(20,2) df<-data.frame(x1,x2,x3,x4,x5) df
输出结果
x1 x2 x3 x4 x5 1 1.33780769 1 5 1 3.3322153 2 2.22651263 3 5 14 3.4969403 3 0.53231950 4 9 8 3.7816594 4 0.99704756 1 6 13 2.7308284 5 0.37735760 2 5 7 2.3210021 6 0.96967898 3 7 8 1.9086576 7 0.06543569 2 4 9 1.4005479 8 1.59064892 1 8 14 1.1250329 9 0.48771130 1 4 11 2.2479028 10 0.64134261 0 9 5 2.4194513 11 0.43355439 3 2 18 -0.7633724 12 1.31803573 3 4 10 2.6201427 13 0.25367683 3 6 9 1.5728880 14 1.07884550 5 4 9 0.8045540 15 0.78574641 6 6 8 1.3538888 16 -0.27873444 2 6 12 3.5431787 17 0.28112519 2 3 8 4.1865617 18 1.24416762 4 4 11 2.3626763 19 -0.04745463 2 5 13 3.4203297 20 1.33358241 1 9 14 2.8205837
查找还将返回值的行索引的行-
df[df$x4==14,]
输出结果
x1 x2 x3 x4 x5 2 2.226513 3 5 14 3.496940 8 1.590649 1 8 14 1.125033 20 1.333582 1 9 14 2.820584
df[df$x4==12,]
输出结果
x1 x2 x3 x4 x5 16 -0.2787344 2 6 12 3.543179
df[df$x4==7,]
输出结果
x1 x2 x3 x4 x5 5 0.3773576 2 5 7 2.321002
df[df$x4==9,]
输出结果
x1 x2 x3 x4 x5 7 0.06543569 2 4 9 1.400548 13 0.25367683 3 6 9 1.572888 14 1.07884550 5 4 9 0.804554
df[df$x2==2,]
输出结果
x1 x2 x3 x4 x5 5 0.37735760 2 5 7 2.321002 7 0.06543569 2 4 9 1.400548 16 -0.27873444 2 6 12 3.543179 17 0.28112519 2 3 8 4.186562 19 -0.04745463 2 5 13 3.420330
df[df$x2==5,]
输出结果
x1 x2 x3 x4 x5 14 1.078845 5 4 9 0.804554
df[df$x2==4,]
输出结果
x1 x2 x3 x4 x5 3 0.5323195 4 9 8 3.781659 18 1.2441676 4 4 11 2.362676
df[df$x3==4,]
输出结果
x1 x2 x3 x4 x5 7 0.06543569 2 4 9 1.400548 9 0.48771130 1 4 11 2.247903 12 1.31803573 3 4 10 2.620143 14 1.07884550 5 4 9 0.804554 18 1.24416762 4 4 11 2.362676
df[df$x3==6,]
输出结果
x1 x2 x3 x4 x5 4 0.9970476 1 6 13 2.730828 13 0.2536768 3 6 9 1.572888 15 0.7857464 6 6 8 1.353889 16 -0.2787344 2 6 12 3.543179
df[df$x3==5,]
输出结果
x1 x2 x3 x4 x5 1 1.33780769 1 5 1 3.332215 2 2.22651263 3 5 14 3.496940 5 0.37735760 2 5 7 2.321002 19 -0.04745463 2 5 13 3.420330
df[df$x3==8,]
输出结果
x1 x2 x3 x4 x5 8 1.590649 1 8 14 1.125033
df[df$x2==1,]
输出结果
x1 x2 x3 x4 x5 1 1.3378077 1 5 1 3.332215 4 0.9970476 1 6 13 2.730828 8 1.5906489 1 8 14 1.125033 9 0.4877113 1 4 11 2.247903 20 1.3335824 1 9 14 2.820584