2014-07-15 5 views
-1

숨바꼭질들, 나는이처럼 보이는 data.frame 있습니다서브 세트 숫자 값 및 특수 문자

Gene_name  Chr_ID  Value  
    a    1   34  
    b  HG1497_PATCH  12  
    c    22   123  
    d   LRG_70  34  
    e    X   56  
    f    Y   0.1  
    g    6   0.12  
.....   .....  ....... 

10.000까지 행을. I는 다음과 같은 출력 싶습니다 행을 유지하는

Gene_name  Chr_ID  Value  
    a    1   34  
    c    22   123  
    e    X   56  
    f    Y   0.1  
    g    6   0.12  
.....   .....  ....... 

기준은 2 열 (Chr_ID)과 플러스 XY의 수치이다.

아무도 도와 줄 수 있습니까? 당신이 Chr_IDX 또는 Y를 제외한 모든 숫자가 아닌 문자가 포함 된 모든 행을 제거하려면

답변

5

, 당신은 dat는 데이터 프레임의 이름입니다

dat[grep("^(\\d|[XY])+$", dat$Chr_ID), ] 
# Gene_name Chr_ID Value 
# 1   a  1 34.00 
# 3   c  22 123.00 
# 5   e  X 56.00 
# 6   f  Y 0.10 
# 7   g  6 0.12 

를 사용할 수 있습니다. XY이 숫자와 함께 허용되지 않는 경우

또는, 당신은 여전히,

dat[grep("^(\\d+|X|Y)$", dat$Chr_ID), ] 
+0

이 내가 업데이트를 보았다 Chr_ID' –

+0

'에서 XY2''와 같은 값으로 작동하지 않습니다 사용할 수 있습니다 작동하지 않습니다 –

+0

@DavidArenburg 물론, 당신 말이 맞아요. 업데이트를 참조하십시오. –