使用R中的gsub替换数据框列中的特定值

时间:2015-08-17 13:04:42

标签: regex r gsub

我有data.frame如下

> df
ID      Value
A_001   DEL-1:7:35-8_1 
A_002   INS-4l:5_74:d
B_023   0 
C_891   2
D_787   8
E_865   DEL-3:65:1s:b

我想替换以DEL开头的INS列中的所有值和没有任何内容的INS。我的意思是我想获得如下输出

> df
ID      Value
A_001   
A_002   
B_023   0 
C_891   2
D_787   8
E_865   

我尝试使用以下代码在R中使用gsub来实现这一点,但它没有工作

gsub(pattern="(^([DEL|INS]*)",replacement="",df)

任何人都可以指导我如何实现所需的输出。

提前致谢。

2 个答案:

答案 0 :(得分:7)

只需删除字符类,然后在该组旁边添加.*即可。仅sub就能做到这一点。

df$value <- sub("^(DEL|INS).*", "", df$value)

在一个字符类中,每个字符都将被处理为不是整个字符串。因此,[DEL]会匹配给定列表中的单个字符,可能是DEL

答案 1 :(得分:3)

首字母不是数字字母:

df$value <- gsub("^\\D.*", "", df$value)

或删除值中有' - ':

df$value <- gsub(".*-.*", "", df$value)