如何仅从字符串中删除数字

时间:2018-06-11 05:44:24

标签: r regex

我在R

中有以下数据框
| month_range |      total      | month_range    | total_target|
   | 06-2018     |     200         |  08-2018    | 150         |

我只想从Village_Name中删除数字,我想要的数据框将是

ID     Village_Name     
1      23
2      Name-23
3      34
4      Vasai2
5      23

我怎样才能在R?

中完成

2 个答案:

答案 0 :(得分:4)

我们可以使用grepl来匹配数字从开头(^)到结尾($)的一个或多个数字,并否定(!)它这样所有数字只有元素变为FALSE而其他元素变为TRUE

i1 <- !grepl("^[0-9]+$", df1$Village_Name)
df1[i1, ]

根据OP的帖子,它也可能

data.frame(ID = head(df1$ID, sum(i1)), Village_Name = df1$Village_Name[i1])
#   ID Village_Name
#1  1      Name-23
#2  2       Vasai2

或另一种选择是转换为数字,使得非数字元素为NA,并更改为具有is.na的逻辑向量

df1[is.na(as.numeric(df1$Village_Name)),]

答案 1 :(得分:2)

以下是使用sub的另一个选项:

df1[nchar(sub("\\d+", "", df1$Village_Name)) > 0, ]

Demo

基本思路是从Village_Name列中删除所有数字,然后断言至少剩下一个字符,这意味着该条目不是完全数字。

但是,我可能会选择@akrun在实践中给出的grepl选项。