시간이 지남에 따라 이진 신호 버스트의 데이터 테이블이 있습니다. 신호 버스트는 임의의 길이입니다. 그래서 나는 0에서 1 (시작점)의 변화가있는 행 인덱스와 1에서 0 (끝점)의 변화가 일어나는 행 인덱스를 찾아야한다. 그래서 결국 각 신호 버스트의 시작과 끝 시간을 찾을 수 있습니다.값 변경/신호 스위치의 행 인덱스 찾기
어떻게하면됩니까?
시간이 지남에 따라 이진 신호 버스트의 데이터 테이블이 있습니다. 신호 버스트는 임의의 길이입니다. 그래서 나는 0에서 1 (시작점)의 변화가있는 행 인덱스와 1에서 0 (끝점)의 변화가 일어나는 행 인덱스를 찾아야한다. 그래서 결국 각 신호 버스트의 시작과 끝 시간을 찾을 수 있습니다.값 변경/신호 스위치의 행 인덱스 찾기
어떻게하면됩니까?
의견에서 언급 한대로 diff
또는 rle
을 사용할 수 있습니다. 그러나 당신은 제공해야
신호 예를 들어 당신은 무엇을
set.seed(1)
rr <- rbinom(30,1,0.5)
를 시도? 예를 들어 diff
사용하여 나는 다음과 같은
ind <- c(0,diff(rr))
예상 출력을합니까?
start <- min(which(ind==1)) ## change from 0 to 1 (the start point)
end <- max(which(ind==-1)) ## change of 1 to 0 (the end point)
은 데이터를 가정하면 다음과 같습니다 : 나는이 작업을 수행합니다
R> x
V1 V2 V3 V4 V5
[1,] 0 0 0 0 1
[2,] 0 1 0 0 1
[3,] 1 1 0 0 1
[4,] 1 1 0 0 1
[5,] 1 1 1 0 1
[6,] 1 1 1 0 1
[7,] 1 1 1 0 0
[8,] 1 1 1 0 0
[9,] 1 1 1 0 0
[10,] 1 1 1 1 0
[11,] 1 0 1 1 0
[12,] 1 0 1 1 0
[13,] 1 0 1 1 0
[14,] 1 0 1 1 0
[15,] 1 0 1 1 0
[16,] 1 0 1 1 0
[17,] 1 0 1 1 0
[18,] 0 0 1 1 0
[19,] 0 0 1 0 0
[20,] 0 0 1 0 0
:
apply(x, 2,
function (k) {
w <- which(k == 1, arr.ind=TRUE)
c(head(w, 1), tail(w, 1))
})
V1 V2 V3 V4 V5
[1,] 3 2 5 10 1
[2,] 17 10 20 18 6
아마 rle''로. 그러나 더 나은 조언을 얻으려면 몇 가지 예제 데이터를 제공하고 제안 [여기] (http://stackoverflow.com/q/5963269/210673)을 참조하십시오. – Aaron