2013-06-11 4 views
1

아직 초보자이므로 친절하시기 바랍니다 :). 알 수없는 시간 및 알 수없는 간격에서 내 데이터에서 갭이 발생합니다. 이 데이터 집합을 하위 집합을 통해 내 데이터에서 빼내고 싶습니다. 데이터 프레임에서 데이터 프레임을 제거하지 않고 데이터 갭이있는 여러 하위 세트를 변경하여 변경 한 다음 변경된 하위 세트를 원래 데이터 프레임으로 다시 병합 할 수 있습니다. 또한 결국에는이 스크립트의 대부분을 여러 .csv 파일로 실행하여 하드 코딩 할 수 없게됩니다.R 조건을 사용하여 알 수없는 부분 집합 만들기 R

fixType (column 9) 

fix 
fix 
fix 
fix 
fix 
fix 
lastvalidfix 
0 
0 
0 
0 
0 
firstfix 
fix 
fix 
fix 
fix 
lastvalidfix 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
firstfix 

지금이 코드는 R 완전히 올바른 기능을하지 아니지만, 나는 내가해야 할 일을 표현하는 것을 희망하고있다 : 내 데이터의 샘플은 관련 열이 아래에 있습니다. 본질적으로 lastvalidfix와 firstfix가 9 열의 행에서 발견된다. 나는 그 두 행을 포함 할 것이지만 많은 행이 그들 사이에있는 부분 집합을 만들고 싶다. 위의 샘플 데이터를 사용하는 경우 두 개의 하위 집합을 만들 것입니다. 첫 번째 집합은 7 개의 행, 두 번째 하위 집합은 12 개의 행으로 구성됩니다. 각 파일의 데이터 갭 수는 다양하므로 부분 집합의 수와 길이는 매번 다를 수 있습니다. 각 하위 집합에 고유 한 이름이 필요하다는 것을 알게되었습니다.

subset <- 0 # This is my attempt at creating unique names for the subsets 

for (i in 2:nrow(dataMatrix)) { # Creating new subsets of data for each time the  signal is lost 
    if ((dataMatrix[i, 9] == "lastvalidfix") & 
    (dataMatrix[i, 9] == "firstfix")){ 
     subCreat <- subset(dataMatrix, dataMatrix["lastvalidfix":"firstfix", 9], subset + 1) 
    } 
} 

모든 도움을 주시면 감사하겠습니다.

답변

1

이 시도 :

start.idx <- which(df$fixType == "lastvalidfix") 
end.idx <- which(df$fixType == "firstfix") 
mapply(function(i, j) df[i:j, , drop = FALSE], 
     start.idx, end.idx, SIMPLIFY = FALSE) 

그것은 하위 data.frames 또는 하위 행렬의 목록을 반환합니다. 너무 많은이 꽤 많은 작품을

+0

덕분에 나는에 대한 조언을 따랐다 :

(가 열 이름을 가지고 있다면, 내가보기 엔 당신이 그것을 사용하는 것이 좋습니다 것입니다 내 df$fixType 당신이 dataMatrix[, 9]라고 부르는 것입니다.. 참고) 열 이름을 사용합니다. 유일한 것은 그것이 오랜 시간 동안 (아마도 무한대로) 반복되는 것처럼 보이고 때로는 지정된 것 이외의 다른 값으로 시작하고 끝나는 것처럼 보인다는 것입니다. 왜 어떤 아이디어? – Misc

+0

죄송합니다. 무한대가 아니지만 한 번만 생각하면 여러 번 반복됩니다. – Misc

관련 문제