我有一个这样的数据框:
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)
如何解决这个问题?感谢。
答案 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)