子集数值和特殊字符

Elb*_*Elb -1 regex r

Hy伙计们,我有一个看起来像这样的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    
 .....          .....       .......
Run Code Online (Sandbox Code Playgroud)

直到10.000行.我想要以下输出:

Gene_name      Chr_ID      Value      
   a             1           34     
   c             22          123    
   e             X           56     
   f             Y           0.1      
   g             6           0.12    
 .....          .....       .......
Run Code Online (Sandbox Code Playgroud)

保留行的标准是第2列(Chr_ID)加上X和的数值Y.

有人可以帮我吗?

Sve*_*ein 5

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

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
Run Code Online (Sandbox Code Playgroud)

dat数据框的名称在哪里.

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

dat[grep("^(\\d+|X|Y)$", dat$Chr_ID), ]
Run Code Online (Sandbox Code Playgroud)