使用R中的gsub删除数据框中的特定字母

时间:2016-08-20 11:41:35

标签: r gsub

我有一个这样的数据框:

val                  value
a_green_0            0.1
a_green_01           0.2
....
a_green_0100         0.3
b_green_45            0.1
b_green_451           0.2
...
b_green_45100         0.2

我想删除数字1,2,3,... 100以获得如下输出:

val                  value
a_green_0            0.1
a_green_0            0.2
....
a_green_0            0.3
b_green_45           0.1
b_green_45           0.2
...
b_green_45           0.2

我使用了像这样的gsub,但这不起作用:

gsub("*green_0*", "green_0",train1)

如何解决这个问题?感谢。

2 个答案:

答案 0 :(得分:1)

根据显示的示例,这应该给出预期的输出

sub("_(0|[1-9]{2})\\d+", "_\\1", df1$val)
#[1] "a_green_0"  "a_green_0"  "a_green_0"  "b_green_45" "b_green_45"
#[6] "b_green_45"

数据

df1 <- structure(list(val = c("a_green_0", "a_green_01", "a_green_0100", 
"b_green_45", "b_green_451", "b_green_45100"), value = c(0.1, 
0.2, 0.3, 0.1, 0.2, 0.2)), .Names = c("val", "value"), 
 class =  "data.frame", row.names = c(NA, -6L))

答案 1 :(得分:1)

怎么样:

train1$val<-gsub("green_0.+","green_0",train1$val)