2016-11-08 58 views
1

我有數據幀(DF)的時間間隔:查找數據幀中的起點和終點

Start End Result 
2  300 FL91 
5  250 FL12 
550 750 FL18 
720 900 FL41 

我想找到所有的「結果」是「開始」 < 81>「結束」(所以之間,我想找到所有的「結果」是位於區間與「開始和‘結束’點均低於81 我想:

y <- 81 
findInterval(y, DF$Start, DF$End) 

但我得到了這樣的錯誤:‘VEC’必須進行排序非 - 降低並且不包含NAs 我確定我的數據幀不包含NA,並且是沒有按順序排序。 我也嘗試使用類似主題的建議,但無法找出解決方案。

Extracting data from data frame

Interval search on a data frame

那麼,我該怎麼辦?

回答

2

您可以使用現成的內置功能或者創建自己:

findInt <- function(value, start, end) { 
    start < value & end > value 
} 

indx <- findInt(81, DF$Start, DF$End) 
DF$Result[indx] 
#[1] "FL91" "FL12" 
+0

它的工作原理。非常感謝你 –

2

也許這樣的事情

[1] TRUE TRUE FALSE FALSE 
> df[df[,1] <= 81 & 81 <= df[,2], 3] 
[1] FL91 FL12