如何在R数据框中找到与最近值对应的行?
要在 R 数据框中找到与最近值对应的行,我们可以which.min在获得值与列之间的绝对差值后使用函数以及单个方括号对行进行子集化。
要了解它是如何工作的,请查看下面给出的示例。
示例 1
以下代码段创建了一个示例数据框 -
ID<-1:20输出结果Score<-sample(50:100,20)
df1<-data.frame(ID,Score)
df1
创建以下数据框 -
ID Score1 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 Score5 5 98
示例 2
以下代码段创建了一个示例数据框 -
Emp_ID<-sample(111111:999999,20)输出结果Sal<-sample(20000:50000,20)
df2<-data.frame(Emp_ID,Sal)
df2
创建以下数据框 -
Emp_ID Sal1 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 Sal4 841349 30627
以上是 如何在R数据框中找到与最近值对应的行? 的全部内容, 来源链接: utcz.com/z/317254.html