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