如何在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

以上是 如何在R数据框中找到与最近值对应的行? 的全部内容, 来源链接: utcz.com/z/317254.html

回到顶部