簡體   English   中英

“夾在”行之間的值

[英]"Sandwiching" Values Between Rows

我有這個數據集:

set.seed(111)
row_num = 1:100
variable = rexp(100,1/100)
sandwich = data.frame(row_num, variable)
sandwich = sandwich[order(sandwich$variable),]

假設我有一些新的數據點:

new_point = 4.1

我想確定數據中最接近此 new_point (4.1) 的兩行 - 一行略大於 4.1,另一行略小於 4.1。

我想到了這個:

sandwich$diff = abs(sandwich$variable - new_point)
sandwich = sandwich[order(sandwich$diff),]
final_rows = sandwich[c(1,2),]

我不確定這是否是解決此問題的正確且最有效的方法 - 有人可以對此發表評論嗎?

謝謝!

findInterval也有一個選項

i1 <- findInterval(new_point, sandwich$variable)

-檢查

> sandwich[i1:(i1+1),]
   row_num variable
40      40 3.643575
8        8 6.459048

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM