如何在 R 数据框中查找与最接近值对应的行?
为了找到与 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
广告