2013-05-02 2 views
0

여기에도 비슷한 질문이 있지만 도움을 찾을 수 없습니다.특정 조건의 데이터 프레임 행 삭제

내가 이런 DF 있습니다

df <- data.frame(CSF1=c(-9,-9,-9,-9), CSF2=c(-9,-1,-9,-9), 
       D13S1=c(-9,-9,11,11), D13S2=c(-9,-9,11,12)) 

     CSF1 CSF2 D13S1 D13S2 
10398  -9 -9 -9 -9     
10398  -9 -1 -9 -9        
20177  -9 -9 11 11     
20361  -9 -9 11 12   

내가 값으로 모든 행을 삭제할 -9 -1 처음 2 행 같은 모든 열합니다.

감사합니다.

답변

2

이가 (도브의 게시물을 설명하기 아룬 편집) 시도 :

df[rowSums(df == -1 | df == -9, na.rm = TRUE) != ncol(df), ] 
## CSF1 CSF2 D13S1 D13S2 
## 3 -9 -9 11 11 
## 4 -9 -9 11 12 

(df == -1 | df == -9) 당신에게 논리적 매트릭스를 제공 할 것입니다. rowSumsTRUE1으로 평가되기 때문에 각 행에 TRUE 수를 제공합니다. na.rm=TRUENA 행을 생략하지 않는 것입니다 (Dov의 게시물 참조). 결과 행 번호를 사용하여 df 부분 집합을 만듭니다.

3

내가 추가 할 예정인 것은 which 기능이 필요없는 것 같습니다. 이를 제거하면 같은 결과가 발생합니다.

누락 된 데이터가있는 상황에서 두 번째 문제가 있습니다. 만약 당신이 을 3 번째 행 (df[3,4] <- NA으로 시도)에 추가한다면, 위의 솔루션의 출력은 다른 항목의 값과 상관없이 3 번째 행을 생략 할 것입니다. 데이터 집합에 문제가 없으므로 대안을 제안하지 않습니다.

+0

Dov, 대안을 제안해야한다고 생각합니다. 그것이 바로 (가장 좋은 * 답을 얻는) 요점입니다 :). – Arun

+0

(+1) 대안을 항상 잘 알고 있습니다. – Nishanth