我有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)
任何人都可以指导我如何实现所需的输出。
提前致谢。
答案 0 :(得分:7)
只需删除字符类,然后在该组旁边添加.*
即可。仅sub
就能做到这一点。
df$value <- sub("^(DEL|INS).*", "", df$value)
在一个字符类中,每个字符都将被处理为不是整个字符串。因此,[DEL]
会匹配给定列表中的单个字符,可能是D
或E
或L
。
答案 1 :(得分:3)
首字母不是数字字母:
df$value <- gsub("^\\D.*", "", df$value)
或删除值中有' - ':
df$value <- gsub(".*-.*", "", df$value)