2017-01-16 16 views
5

私のような見えdata.table形式のデータセットがあります:私は最終的な結果は値が範囲内にあるかどうかを確認しますか?

[1] TRUE TRUE FALSE FALSE 
ようになりますように、値1は、 time.stime.e内にあるかどうかを確認したい

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

どうすればいいですか?私は使用しようとしました

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

しかし、私はすべて真の値です。どんな勧告?

+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] 

ライブラリを読み込むのは難しいですが、構文は非常に直感的です。

関連する問題