子集数值和特殊字符

时间:2014-07-15 13:59:47

标签: regex r

嗨伙计们, 我有一个看起来像这样的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行。 我想要以下输出:

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的数字值。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:5)

如果要删除Chr_ID包含除XY以外的任何非数字字符的所有行,您可以使用

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

其中dat是数据框的名称。

或者,如果XY不允许与数字结合使用,则可以使用

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