用第一个数字代替4位数字

时间:2014-07-08 14:17:39

标签: regex r

我有一个填充4位数字的因子列。我想用第一个数字代替数字。例如:

号码7819,我想用7代替。 号码2538,我想用2代替。 号码5181,我想用5代替等等...... 我有以下代码:

df$colname<- sub("([0-9]+^7)","7",df$colname)

我想对整列的行进行替换。

拜托,帮帮我!!!

谢谢,

3 个答案:

答案 0 :(得分:5)

如何简单地这样做:

 > substr("7819-",1,1)
 [1] "7"

答案 1 :(得分:1)

使用捕获组:

> sub('(\\d)\\d+', '\\1', '2538')
[1] "2"
> sub('(\\d)\\d+', '\\1', '7819')
[1] "7"
> sub('(\\d)\\d+', '\\1', 'number 7819')
[1] "number 7"
> sub('(\\d)\\d+', '\\1', 'no number')
[1] "no number"

答案 2 :(得分:0)

你也可以这样做:

library(stringr)
vec1 <- c('2538', '7819', 'number 7819', 'no number')

str_replace(vec1,perl('(?<=[0-9])\\d+'), "")
#[1] "2"         "7"         "number 7"  "no number"

解释

(?<=[0-9])\\d+查看模式匹配任何数字后跟数字

将数字替换为''

更新

不确定-是否也是字符串的一部分,以及是否要替换它

vec2<- c('2538', '7819', 'number 7819', 'no number', '2583- fun', '-7256 something')
 str_replace(vec2,perl('(?<=[0-9])\\d+([[:punct:]]+)?'), "")
 # [1] "2"            "7"            "number 7"     "no number"    "2 fun"       
 # [6] "-7 something"