2014-11-11 3 views
0

특정 패턴이 포함되어 있는지 여부에 따라 데이터 프레임에서 사례를 제거하고 싶습니다. 예를 들어 아래의 데이터 프레임에서 (가로 채기), iyeareducc, ibphtdep 및 gender_R22가 포함 된 모든 행을 제거하고 싶습니다 (또는 _carrier1 또는 adri가 포함 된 행을 선택). 내가 그렇게기준에 따라 선택한 사례 제거

dat[(seq(2,nrow(dat),5)),] 
           OR  CI P 
apoee4_carrier.apoee4_carrier1 1.03 0.77-1.37 0.84 
BDNF_carrier.BDNF_carrier1  0.87 0.66-1.14 0.33 
adri.adri      1.03 1-1.06 0.04 

처럼, 내가 필요로하는 행을 서브 세트 시퀀스를 사용할 수 있지만 순서가 필요하지 않을 수 있습니다 전체 dataframe, 전반에 걸쳐 동일한 경우

       OR  CI P 
apoee4_carrier.(Intercept)  1.96 0.97-3.94 0.06 
apoee4_carrier.apoee4_carrier1 1.03 0.77-1.37 0.84 
apoee4_carrier.iyeareducc  0.86 0.82-0.9 0.00 
apoee4_carrier.ibphdtdep  1.01 0.96-1.05 0.81 
apoee4_carrier.gender_R22  0.87 0.67-1.12 0.28 
BDNF_carrier.(Intercept)  2.05 1.01-4.14 0.04 
BDNF_carrier.BDNF_carrier1  0.87 0.66-1.14 0.33 
BDNF_carrier.iyeareducc  0.86 0.82-0.9 0.00 
BDNF_carrier.ibphdtdep   1.00 0.96-1.05 0.82 
BDNF_carrier.gender_R22  0.87 0.67-1.12 0.28 
adri.(Intercept)    1.60 0.78-3.31 0.20 
adri.adri      1.03 1-1.06 0.04 
adri.iyeareducc    0.89 0.84-0.94 0.00 
adri.ibphdtdep     1.00 0.95-1.04 0.87 
adri.gender_R22    0.87 0.67-1.12 0.27 

이에만 작동합니다 이 데이터 프레임으로서의 경우는 함께 rbind 된 데이터 프레임의리스트로부터 생성된다.

감사합니다.

답변

2

당신이 원하지 않는 당신이 원하는/행을 선택 grep를 사용할 수 있습니다

dat[-grep("Intercept|iyeareducc|ibphdtdep|gender", rownames(dat)),] 

grep가 행 이름이 검색 문자열 중 하나 이상을 포함하는 행의 행 번호를 (수익 각 문자열 사이의 |은 "OR"을 의미합니다). grep 앞에 빼기 기호를 넣으면 grep이 반환하지 않는 행 dat 만 반환하도록 에 지시합니다.

+0

감사합니다. – Andrews

관련 문제