2017-01-16 98 views
5

我有一個data.table格式的數據集,看起來這樣的:檢查值是否在一個範圍內?

ID  time.s  time.e 
1  1   2 
2  1   4 
3  2   3 
4  2   4 

我要檢查,看看是否值1中time.stime.e,這樣最終的結果會是什麼樣子

[1] TRUE TRUE FALSE FALSE 

我該怎麼辦呢?我曾嘗試使用

a[1 %in% seq(time.s, time.e)] 

但我得到的全是TRUE值。任何建議?

+0

@scoa。這實際上是一個data.table – akash87

+0

@ akash87對不起,但你應該在問題中提及它:) – scoa

回答

4

假設的ID的值是唯一的:

DT[, list(OK = 1 %in% seq(time.s, time.e)), by = ID] 

給予;

ID OK 
1: 1 TRUE 
2: 2 TRUE 
3: 3 FALSE 
4: 4 FALSE 
4

而且,這個工程:

with(dat, time.s <= 1 & time.e >= 1) 
1

這裏還有一個。

library(TeachingDemos) 
a[time.s %<=% 1 %<=% time.e] 

這可能是矯枉過正的加載庫,但語法很直觀。

相關問題