나는 시계열과 값의 데이터 프레임을 가졌다. 시계열은 신기원으로부터 초입니다. 여기서 최상위 몇몇 요소가 데이터 프레임과 같이 어떻게데이터 프레임의 간격 검색
val = seq(1,19)
ts = seq(1342980888,1342982000,by=60)
x = data.frame(ts = ts,val = val)
head(x)
ts val
1 1342980888 1
2 1342980948 2
3 1342981008 3
4 1342981068 4
5 1342981128 5
6 1342981188 6
I 입력으로 타임 스탬프를 취하는 구간 검색 기능의 일종 싶다라고 상기 제에 1,342,980,889 (+1 상기 TS 행) 및 1,2 (행 번호) 출력으로 반환해야합니다. 기본적으로, 나는 입력 타임 스탬프 1342980889를 묶는 타임 스탬프를 가진 두 개의 행을 찾고 싶다. "which"를 사용하는 것이 비교적 쉽지만, "which"는 벡터 스캔을하고, 실제 데이터 프레임은 꽤있다. 큰 나는 이진 검색을 사용하여 그것을하고 싶다. 미리 미리 감사드립니다.
이 방법은 잘 작동합니다. 로그 (N) 시간에 검색이 발생합니까? – broccoli
도움말 페이지의 세부 정보 섹션에서는 복잡성에 대해 설명합니다. – flodel
단일 값으로 검색하려면 yes, O (log (N))를 입력하십시오. 더 일반적으로, 첫 번째 입력이 길이가 n 인 벡터 인 경우 O (n * log (N))이고, 벡터가 정렬되면 O (n)까지 내려갑니다. – flodel