如何在 R 数据框中找到与最近值相对应的行?
r programmingserver side programmingprogramming更新于 2025/4/9 18:37:17
要找到与 R 数据框中的最近值相对应的行,我们可以在获得值与列之间的绝对差以及用于对行进行子集设置的单个方括号后使用 which.min 函数。
要了解其工作原理,请查看下面给出的示例。
示例 1
以下代码片段创建了一个示例数据框 −
ID<-1:20 Score<-sample(50:100,20) df1<-data.frame(ID,Score) df1
输出
创建以下数据框 −
ID Score 1 1 85 2 2 91 3 3 73 4 4 77 5 5 98 6 6 53 7 7 59 8 8 74 9 9 88 10 10 84 11 11 82 12 12 94 13 13 56 14 14 76 15 15 89 16 16 71 17 17 52 18 18 64 19 19 69 20 20 63
要查找 df1 中与最接近的 100 对应的行,请将以下代码添加到上面的代码片段中 −
ID<-1:20 Score<-sample(50:100,20) df1<-data.frame(ID,Score) df1[which.min(abs(100-df1$Score)),]
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
ID Score 5 5 98
示例 2
以下代码片段创建了一个示例数据框 −
Emp_ID<-sample(111111:999999,20) Sal<-sample(20000:50000,20) df2<-data.frame(Emp_ID,Sal) df2
输出
创建以下数据框 −
Emp_ID Sal 1 234742 38090 2 584335 43409 3 850592 43036 4 841349 30627 5 628123 32998 6 297438 45053 7 635135 21746 8 866226 40546 9 457493 26573 10 779219 41954 11 933665 46539 12 162673 35816 13 608379 41035 14 256672 49987 15 605809 32840 16 996414 36487 17 910392 33479 18 964044 25177 19 934603 33697 20 171843 37909
要在 df2 中找到与最接近的 30000 相对应的行,请将以下代码添加到上面的代码片段中 −
Emp_ID<-sample(111111:999999,20) Sal<-sample(20000:50000,20) df2<-data.frame(Emp_ID,Sal) df2[which.min(abs(30000-df2$Sal)),]
输出
如果将上述所有代码片段作为单个程序执行,则会生成以下输出 −
Emp_ID Sal 4 841349 30627