2017-01-16 1 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

@ 스코어. 이것은 실제로 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] 

라이브러리를로드하는 것은 과도한 일이지만 구문은 매우 직관적입니다.

관련 문제